docker-compose.yml内のenv_file設定で狂ってしまいます。 ファイル名を.env
とし、プロジェクトのルートに置くとすべて正常に動作します。このenvファイルを持つ主なポイントは、私が設定した複数の環境(dev、staging、production)を持つことでした。 すぐに私のファイルの名前を変えてください(例えば、dev.env
をenvフォルダに入れてください)、それを私のdocker-composeファイルの中に読み込もうとすると動作しません。docker-composeは、yamlファイルに定義されている追加のenv-fileをロードしません。
私は事を明確にする簡単な例を作ります。 簡単にするために、私は1つの変数DC_DOCKERFILEを使用します。ここでは、ロードするドッカーファイルを定義します。
ファイル:ルートフォルダ内.env
:
COMPOSE_PROJECT_NAME=test
DC_DOCKERFILE=./Dockerfile.bash.dev
ファイル:docker-compose.yml
:
version: "2"
services:
bash:
build:
context: .
dockerfile: ${DC_DOCKERFILE}
とdocker-compose config
すべてがクールであることを示し、同様な作品を構築:
networks: {}
services:
bash:
build:
context: /devops/myproject
dockerfile: ./Dockerfile.bash.dev
version: '2.0'
volumes: {}
を今私を驚かせる点:
env_file: ./env/dev.env
私の新しいdocker-compose.yml
:
version: "2"
services:
bash:
env_file: ./env/dev.env
build:
context: .
dockerfile: ${DC_DOCKERFILE}
のみenv_file設定を追加、変更します。
と今私docker-compose config
は私にこれを与える:
networks: {}
services:
bash:
build:
context: /devops/myproject
dockerfile: ''
environment:
COMPOSE_PROJECT_NAME: test
DC_DOCKERFILE: ./Dockerfile.bash.dev
version: '2.0'
volumes: {}
は何を言いますか?ハックは私のドッカーファイル設定ですか?もちろんdocker-compose build
の
はあまりにも好きではないとして気になる:変数がロードされますが、何らかの形で割り当てられていない取得
docker-compose build --force-rm --no-cache
WARNING: The DC_DOCKERFILE variable is not set. Defaulting to a blank string.
Building bash
ERROR: Cannot locate specified Dockerfile: Dockerfile
。 私はそれを取得しないでください。 私は多分間違っています。私はdocker-compose.ymlファイルの中にドッカー作成用のenvファイルを使用できません。ドッカーの作成パラメータなどで最初にロードする必要があることを意味しますが、時間を過ごすと、内部にロードできるかどうかを知りたいのです:)
ありがとうございました。オープンソースと素晴らしいコミュニティ。
平和アウト
hi lauri、あなたの答えをありがとう。これは、私が必要とするものを行うためのenvファイルを1つしか持てないことを意味しますか?ベストプラクティスを使用してさまざまな環境をどのように処理するのですか?私は自分の変数を動的にすることができ、シェルのenvなどに応じて変数を設定できますが、正しいことをする上でドッカーの方法を学びたいだけです。ありがとうございます – bin2hex
はい、ドキュメントに基づいて1つのenvファイルしか作成できません。 – Lauri
ご協力いただきありがとうございます! – bin2hex