マルチステージビルドは、1つのファイル内で複数のステージを利用することで、より軽量なDockerイメージを作成することを可能にします。最初のステージでは依存関係とソースコードをコンパイルし、その後のステージでは必要なファイルのみをコピーします。この手法により、最終的なイメージから不要なライブラリやバイナリが削除され、ストレージコストを大幅に削減し、本番環境におけるコンテナの起動時間を高速化することができます。
Dockerfileにおいて、コンパイル処理と実行時要件を分離するために、複数のビルドステージを定義します。
各段階を順番に実行し、次の段階へは必要なファイルのみを移行してください。
最小限のアーティファクトのみをコピーし、外部依存関係のないベースイメージに組み込むことで、イメージの最終化を行います。
初期コンパイル段階において、公式のベースイメージを使用してFROMディレクティブを作成してください。
この隔離された環境内で、ビルドツールをインストールし、アプリケーションコードをコンパイルしてください。
次のステージに向けて、最小限のランタイムイメージを持つ、2つ目のFROMディレクティブを開始します。
コンパイルされたバイナリファイルまたは静的アセットのみを、ソースファイルを含まない状態で最終段階にコピーしてください。
ビルドファイルを構成し、`FROM`指示を用いて明確なステージを定義し、`COPY`コマンドを適切に使用してください。
各ステージが一時ファイルを引き継がずに正常に完了することを確認するため、CI/CDランナーを監視します。
Docker inspectコマンドまたはサードパーティ製のツールを使用して、シングルステージビルドと比較した際のイメージのサイズ削減効果を測定してください。