環境構築時に少しハマったのでメモ
ハマったこと
※環境変数は.env
ファイルで管理しているものとします。
.env
# 環境変数
# ※変更前
# HOGE="hoge"
# ※変更後
HOGE="fuga"
上記のように、環境変数を変更し、ビルドしてコンテナ再起動しても、変更が反映されない。
# イメージ再作成し、
docker-compose build
# コンテナを再起動
docker-compose restart
# その後、コンテナに入って
docker-compose exec sample_app bash
# 環境変数を確認しても、変更が反映されていない
echo $HOGE
hoge
# キャッシュなしでイメージ再作成しても、
docker-compose build --no-cache
# 変更が反映されない
echo $HOGE
hoge
解決方法
# upでコンテナを再作成することで、 (-d はデーモン実行のオプションなので、付けなくてもOKです)
docker-compose up -d
# 変更が反映された
echo $HOGE
fuga
# おまけ:イメージとコンテナの更新を同時に行いたい場合は、buildオプション追加すればOK
# (-d はデーモン実行のオプションなので、付けなくてもOKです)
docker-compose up --build -d
原因
コンテナが更新されていなかったのが原因でした。
build
, start
ではコンテナが更新されないので、環境変数の変更が反映されなかったようです。
up
でコンテナを再作成することで、変更が反映されたというわけですね。
オプションの違いについては、以下の記事がとても分かりやすいのでおすすめです。