8
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

docker-compose buildしても環境変数が反映されない場合の解決方法と原因

Posted at

環境構築時に少しハマったのでメモ

ハマったこと

※環境変数は.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でコンテナを再作成することで、変更が反映されたというわけですね。

オプションの違いについては、以下の記事がとても分かりやすいのでおすすめです。

8
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?