ファイルでデフォルトの環境変数を設定

Compose はプロジェクトのディレクトリ内にある .env という名前の 環境ファイル(environment file) 内で、デフォルトの環境変数の設定をサポートします。 Docker Compose バージョン 1.28 未満では、コマンドを実行する現在の作業ディレクトリ内にある .env ファイルを読み込みます。または、 --project-directory オプションを明示する場合は、プロジェクトのディレクトリにあるファイルを読み込みます。この矛盾を解消するため、 v1.28 以上からは、プロジェクトのディレクトリにあるデフォルトの .env のみに制限しています。 --env-file コマンドライン オプションを使えば、デフォルトの .env を上書きでき、さらに任意の環境ファイルのパスを指定できます。

プロジェクト ディレクトリは優先順位によって決まります

  • --project-directory フラグ

  • 1つめの --file フラグがあるフォルダ

  • 現在のディレクトリ

構文ルール

.env ファイルは、以下の構文ルールを適用します。

  • Compose は env ファイルの各行を 変数=値 形式と想定

  • # で始まる行はコメントとみなし、無視する

  • 空白行を無視する

  • 引用記号には特別な処理を行わない。つまり 引用記号は値の一部 とみなす

Compose ファイルと CLI 変数

このファイルで定義した環境変数は、 Compose ファイル内で 変数展開 されます。また、以下の CLI 変数 の定義も使えます。

  • COMPOSE_API_VERSION

  • COMPOSE_CONVERT_WINDOWS_PATHS

  • COMPOSE_FILE

  • COMPOSE_HTTP_TIMEOUT

  • COMPOSE_PROFILES

  • COMPOSE_PROJECT_NAME

  • COMPOSE_TLS_VERSION

  • DOCKER_CERT_PATH

  • DOCKER_HOST

  • DOCKER_TLS_VERIFY

注釈

  • .env ファイル内で定義された環境変数の値は、実行時に常に上書きされます。同様に、コマンドラインの引数で渡された値も優先されます(上書きされます)。

  • .env ファイル内で定義された環境変数は、コンテナ内から自動的に見えません。コンテナ内で利用できる環境変数を指定するには、 Compose での環境変数 のトピックにあるガイドラインをご覧ください。こちらには、シェル上の環境変数をコンテナ内に渡す方法や、 Compose ファイルでの環境変数の定義方法などの説明があります。

ほかの Compose ドキュメント

参考

Declare default environment variables in file | Docker Documentation

https://docs.docker.com/compose/env-file/