備忘録: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ファイルが必要になったりというケースはよくあると思う.
遭遇した際にはこの基本を思い出したい.