備忘録:docker-composeにおける環境変数の読み込み順序
今回はdocker-compose
における環境変数の読み込まれる順番についてまとめた.
概要
docker-compose
における環境変数の設定方法はいくつかあるものの,それらの順序を意識したことはない.たいていうまく行く方法を一つ覚えておけば問題ないが,そうはいってもこうした基本的なところが後々のつまづきの原因になることはよくある話なので今回は環境変数の読み込まれる順番について備忘録としてまとめた.
環境
- Docker
今回の目的
docker-compose
における環境変数の読み込まれる順番を理解する.
環境変数を設定する方法
公式ドキュメントによれば,docker-compose
における環境変数の宣言には複数の方法がある.
- シェル内にて環境変数を設定し,composeファイル内で読み込ませる
- composeファイル内において
environment
キーを使って環境変数を設定/シェル内の環境変数の受け渡しをする - composeファイル内において
env_file
設定オプションを利用する docker-compose run -e
の実行時に環境変数を設定/シェル内の環境変数の受け渡しをする.env
ファイルに環境変数を記述しcomposeファイル内において値を読み込む
さて,これらが単一で設定されていれば良いが,いくつか同時に設定された場合はどの順番で読み込まれるのだろうか.
環境変数の読み込まれる順番
composeファイル内のenvironment
とenv_file
, Dockerfile内のENV
の場合は
- composeファイル内の
environment
- composeファイル内の
env_file
- Dockerfile内の
ENV
の順番で読み込まれる.
composeファイル内にて設定される値は以下の順番で環境変数は読み込まれる.
environment
やenv_file
の中で設定した値- シェル内にて設定される値
.env
ファイル内にて設定される値
最後に
今回は環境変数の読み込み順番を備忘録としてまとめた.composeファイルにenvironment
キーとenv_file
両方が指定されているようなカオスに遭遇することは少ないと思うが
composeファイルによってenvironment
キーが使用されていたり,env_file
が使用されていたり,.env
ファイルが必要になったりというケースはよくあると思う.
遭遇した際にはこの基本を思い出したい.