ウェブサーバーとデータベースからなるサービスをすべてドッキング用のコンテナに作成しようとしています。現在私は両方のデータベースの資格情報を含むだろう同じ環境ファイルを作成しようとしています。不幸にも、データベースを構築しようとすると、空であることがわかります。どのようにして、両方のコンポーネントに単一の環境ファイルを持つプロジェクトを作成できますか?ここに私のドッキングウィンドウ-compose.ymlは次のとおりです。ここで環境変数をドッカーファイルビルドに渡す
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
は、データベースの作成を担当する私のDockerfile-DBファイルの一部です:
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;"
そして、私のenvファイルには、以下の構造を有している。
DB_NAME=some_name
DB_USER=postgres
DB_PASSWORD=some_password
DB_HOST=db
DB_PORT=5432
私は '--build-arg'がnサポートされています。 'docker-compose'バージョンのせいかもしれませんか? (私は1.8を実行しています) 使用法:ビルド[オプション] [サービス...] オプション: --force-rm必ず中間コンテナを削除してください。 --no-cacheイメージをビルドするときにキャッシュを使用しないでください。 --pull新しいバージョンのイメージを常にプルしようとします。 – gonczor
はい。 'docker-compose build --help'が' --build-arg'オプションを表示していない場合は、ドッカーの構成を更新する必要があります – yamenk
助けてくれてありがとう。出来た。そして私は回避策を考え出した。コマンドに '--build-args $(cat env)'を追加しました。あなたが答えにそれを追加することがとても親切だったら、私は感謝するでしょう。 – gonczor