Dockerイメージのビルド時にパッケージのインストールに失敗する
微修正を行いながら何度も繰り返しDockerコンテナを作成していると、
apt、yumなどでパッケージをインストールする部分で、404エラーが発生し、Dockerイメージのビルドに失敗する場合があります。
これは、Dockerがキャッシュを使用しているためです。
Dockerイメージのビルド時には、Dockerfileの各行の実行結果を保存しており、再度ビルドする際にはキャッシュとしてその結果を再利用します。
次のようにCACHEDという文字列が出力されている箇所では、キャッシュを利用しています。
$ docker compose up -d ... => CACHED [3/14] RUN apt update && apt upgrade -y 0.0s ...
そのため、apt updateなどのパッケージ情報を更新するコマンドの実行結果がキャッシュされていると、パッケージ情報が更新されません。
インストールされるパッケージを変更したとき、古いバージョンのパッケージをインストールしようとしてビルドに失敗します。
このような場合は、docker buildやdocker compose buildに--no-cacheオプションを付けることで、キャッシュを使用せずにビルドできます。
ビルドが終わったら、改めてコンテナを起動してください。
$ docker compose build --no-cache $ docker compose up -d