ファイル変更時にdocker-composeを確実に再構築して反映させる

公開日:
目次

Dockerを利用している際に、アプリケーション側のコードに新規ファイルを追加したり既存のファイルを修正した後、docker compose up --buildを実行しても、ファイルの変更が反映されない問題に直面しました。

この問題を解決するために実行した手順がうまくいったので、その方法をここに備忘録として残します。

TL;DR

ファイル変更を正しく反映させるために、以下の手順を試してください。

  1. docker compose down または docker-compose downを実行して、コンテナを一度停止し、削除します。
  2. docker compose build --no-cache または docker-compose build --no-cacheを実行して、キャッシュを無視してイメージを再ビルドします。
  3. docker compose up --force-recreate または docker-compose up --force-recreateを実行して、コンテナを強制的に再構築します。

docker compose build --no-cache

このコマンドは、Dockerイメージをビルドする際にキャッシュを使用せず、すべてのステップを新規に実行します。これにより、以前のビルドからの潜在的な影響を排除し、コードの変更が新しいイメージに確実に反映されるようにします。

docker compose up --force-recreate

コンテナを起動する際に、--force-recreateオプションを付けることで、既存のコンテナを無視して新しいコンテナを作成します。これは、イメージは新しくビルドされているものの、変更がコンテナに反映されないという問題を解決します。

参考

この手順を試す際に参考にした情報源は以下の通りです。

これらの手順を実行することで、Docker利用時にアプリケーションのコードを変更した際の問題を解決できるはずです。何か問題が発生した場合は、上記の参考リンクも併せて確認してみてください。