Dockerfile for mysqlを見ると、あなたはいくつかのRUNコマンドに次のようなパターンが表示されます:
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates \
wget \
&& rm -rf /var/lib/apt/lists/*
最初の行は、パッケージリポジトリの現在の状態を収集し、その後、インストールが実行され、最後に、パッケージレポ状態がファイルシステムから削除されます。画像層に肥大化を防ぐために、同じrunコマンドで不要なファイルをクリーンアップ
- :これは二つの問題を防ぐためにbest practices from Dockerに従っています。
- 最終的に古くなってエラーが発生するキャッシュデータを削除すると、キャッシュデータは失効した時点で再利用する必要があります。
apt-get update
をapt-get install
から2つの別々のRUNコマンドで区切ります。ドッカーがレイヤーをどのようにキャッシュするかによって、apt-get updateコマンドが以前実行されたコマンドと同じ場合、ドッカーはキャッシュされた結果を再利用します。 apt-get install
コマンドを変更して別のパッケージを組み込むと、キャッシュされた更新コマンドがパッケージリポジトリに存在しなくなったイメージを指しているため、イメージのビルドに失敗することがあります。