環境変数のデフォルトをファイル内に定義する

Compose では環境変数のデフォルトを定義しておくことができます。 これは.envという名前の環境ファイルに環境変数を定義するもので、プロジェクトディレクトリにおきます。 Docker Compose のバージョンが1.28よりも古ければ.envファイルは、コマンドが実行されたカレントなワーキングディレクトリにあるものがロードされます。 あるいは--project-directoryオプションが指定されていれば、そこに指定されたプロジェクトディレクトリから読み込まれます。 この不整合は、v1.28以降においてデフォルトの.envファイルパスをプロジェクトディレクトリに置くことで解消されます。 コマンドラインオプション--env-fileを利用すれば、デフォルトの.envをオーバーライドして、独自の環境ファイルへのパスを指定することができます。

プロジェクトディレクトリは以下の順に定められます。

  • --project-directoryフラグ
  • --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 ドキュメント

fig, composition, compose, docker, orchestration, environment, env file