Ich versuche, einen Dienst, der aus einem Webserver und einer Datenbank besteht, alle in Dockercontainern zu erstellen. Momentan versuche ich, dieselbe Umgebungsdatei für beide zu erstellen, die Datenbankberechtigungsnachweise enthalten würde. Leider, wenn ich versuche, eine Datenbank damit zu erstellen, stellt sich heraus, dass sie leer sind. Wie kann ich ein Projekt mit einer einzelnen Umgebungsdatei für beide Komponenten erstellen? Hier ist meine Docker-compose.yml:Übergeben Sie die Umgebungsvariable an dockerfile build
version: '2'
services:
db:
build:
context: .
dockerfile: Dockerfile-db
ports:
- '5433:5432'
env_file:
- env
web:
build: .
ports:
- '8000:8000'
command: venv/bin/python manage.py runserver 0.0.0.0:8000
depends_on:
- db
env_file:
- env
Hier ist ein Teil meiner Dockerfile-db-Datei verantwortlich für die Erstellung der Datenbank:
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y postgresql-9.5-postgis-2.2
USER postgres
ARG DB_PASSWORD
ARG DB_NAME
RUN echo $DB_PASSWORD
RUN /etc/init.d/postgresql start && \
psql --command "ALTER USER postgres WITH PASSWORD '$DB_PASSWORD';" && \
psql --command "CREATE DATABASE $DB_NAME;" && \
psql --command "\\c $DB_NAME" && \
psql --command "CREATE EXTENSION postgis;" && \
psql --command "CREATE EXTENSION postgis_topology;"
Und meine env-Datei hat folgende Struktur:
DB_NAME=some_name
DB_USER=postgres
DB_PASSWORD=some_password
DB_HOST=db
DB_PORT=5432
Ich bekomme diese Nachricht, als ob die '--build-arg' war n unterstützt. Kann es wegen 'docker-compose' Version sein? (Ich bin mit 1.8) Verbrauch: bauen [Optionen] [SERVICE ...] Optionen: --force-rm Immer Zwischenbehälter entfernen. --no-cache Verwenden Sie beim Erstellen des Images keinen Cache. --pull Immer versuchen, eine neuere Version des Bildes zu ziehen. – gonczor
Ja möglicherweise. Wenn "docker-compose build --help" nicht die Option "--build-arg" anzeigt, müssen Sie docker compose aktualisieren – yamenk
Vielen Dank für Ihre Hilfe. Es funktionierte. Und ich habe mir einen Workaround ausgedacht. Ich habe gerade '--build-args $ (cat env)' zum Befehl hinzugefügt. Wenn Sie so freundlich wären, es der Antwort hinzuzufügen, wäre ich dankbar. – gonczor