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