
docker-composeのenv_fileを使って設定している環境変数が.envで上書きされるぽい話
docker-composeのenv_fileで指定したファイルに書かれている環境変数と同じ変数が.envファイルにあると、.envで定義されているものに上書きされてしまうという現象に遭遇しました。
docker-compose.yamlは以下のようになっています。
|
|
.env.local(env_fileで読み込んでいるファイル)
|
|
.env
|
|
この場合において、コンテナ内にでAPP_NUMBERの環境変数は「345」が表示されるものだと思っていました。
しかし実際に表示されるのは「123」となります。
|
|
env_fileを止める
この状況だと、.envもホスト側のコンテナの環境変数に設定されてしまうのでは?と思ったので.env_fileの部分をコメントアウトしてみました。
|
|
書き換えたあとにコンテナを再起動して、再度コンテナ内に接続します。
|
|
こんどは何も表示されなくなりました。。
.envに違う環境変数を定義してみる
今度はenv_fileのコメントアウトを外して.envに他の変数も追記しました。
|
|
|
|
APP_NUMBERは.envものになりましたが、APP_VERSIONは未定義のようです。
ここまでで分かったこと
ここまでの挙動をみて分かったことは「env_fileで読み込んでコンテナ側に設定した環境変数は、.envで定義した値で上書きされてしまう」ということだと思います。
つまり以下のようなdocker-compose.yamlと同等かなと。
|
|
最後に
dockerに詳しい人この辺の挙動の解説お願いします…。
マニュアル見てもそれっぽい記述はなさそう。。。