環境変数のデフォルトをファイル内に定義する
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 ファイル内での環境変数の定義方法などを説明しています。