Multi-Stage Build
マルチステージビルドはDockerfile内で複数のFROMステージを使い、最終ステージが必要な成果物だけをコピーしてイメージを小型化する。
目的
最終イメージを小型化し、ビルド時環境と実行時環境を分離する。
メカニズム
ビルドステージでコンパイラと依存関係をインストールして成果物をビルドする。最終ステージは最小ベースイメージ(alpine/distroless)を使い、成果物だけをCOPYする。ビルドツール、ソースコード、中間ファイルを排除する。
ユースケース
- イメージの最適化
- アタックサーフェスの縮小
- Dockerのベストプラクティス