Dockerfileマルチステージビルド入門
2025.12.25 21:55
Dockerfileマルチステージビルド入門
マルチステージビルドとは
Dockerfileのマルチステージビルドは、1つのDockerfile内で複数のFROMステートメントを使用し、ビルドプロセスを段階的に分けて実行する手法です。2017年のDocker 17.05で導入されました。
なぜ必要なのか
従来の単一ステージビルドでは、以下のような課題がありました:
- イメージサイズの肥大化: ビルドツールや依存関係が最終イメージに残る
- セキュリティリスク: 不要なツールが本番環境に含まれる
- 管理の煩雑さ: ビルド用と実行用で別々のDockerfileを管理する必要がある
マルチステージビルドはこれらの問題を解決します。
基本的な構造
ポイント:
- ASでステージに名前をつける
- COPY --from=ステージ名で前のステージからファイルをコピー
- 最後のFROMが最終イメージのベースになる
実践例: Goアプリケーション
この例では:
ビルドステージ: 1GB以上あるGo開発環境でビルド
実行ステージ: 5MB程度の軽量なAlpineイメージでバイナリだけを実行
結果: イメージサイズを90%以上削減可能
メリット
イメージサイズの削減: 必要なファイルだけを最終イメージに含める
ビルドの効率化: レイヤーキャッシュを活用しやすい
セキュリティ向上: ビルドツールを本番環境から除外
シンプルな管理: 1つのDockerfileで完結
まとめ
マルチステージビルドは、効率的で安全なDockerイメージを作成するための必須テクニックです。特に本番環境では、イメージサイズとセキュリティの両面で大きなメリットがあります。
次のプロジェクトでぜひ試してみてください!