IT用語集 › インフラ › マルチステージビルド

マルチステージビルド

インフラ Svenska → 更新: 2026-10-21

Dockerfileの中に複数のステージを設け、重いビルド用ステージでコンパイルし、完成した成果物だけを最小限の最終ステージにコピーする手法。ビルドツールもソースコードも含まない、小さく安全な本番イメージができる。

ビルドにはコンパイラやビルドツール、依存ライブラリが必要だが、本番環境には不要で、むしろ無いほうがよい。イメージが肥大化し、攻撃対象領域も広がるからだ。そこで最初のステージ(例:FROM golang AS build)でコンパイルし、次の最小ステージ(FROM alpine やdistroless)では COPY --from=build で完成したバイナリだけを持ち込む。ビルドの残骸は最終イメージに残らない。

効果は大きい。Goアプリなら約800 MBから約10 MBへ縮むこともあり、攻撃者に使われるコンパイラやシェルも無く、ビルド過程でソースやシークレットが漏れる心配も減る。今日のコンテナ運用では標準的な手法で、distrolessベースと組み合わせることが多い。

← 用語集に戻る