広告スペース(バナー)
🐳Docker レッスン
Dockerの基本を知ろう5
コンテナの起動と管理6
コンテナのライフサイクル操作5
コンテナとのやり取り6
リソース監視とファイル操作3
Dockerfileを書いてみよう6
イメージのビルドと共有5
ボリュームとネットワーク・compose8
レッスン 37 / 45

マルチステージビルドとは?

「ビルドに必要なツールと、実際にアプリを動かすのに必要なものを分けたい」というときに使うのがマルチステージビルドです。1つのDockerfileの中に複数のFROMを書き、ビルド専用の環境と、実行専用の軽量な環境を分ける手法です。

FROM node AS builderのように名前を付けたステージでビルドを行い、最後のステージでCOPY --from=builderを使い、ビルド成果物だけを軽量な実行用イメージにコピーします。

たとえばNode.jsでビルドしたファイルを、最終的にはnginxの軽量イメージだけに含めることで、ビルドツール一式を含まない、必要最小限のイメージに仕上げられます。

よくあるつまずきは、マルチステージビルドを使わずに全てを1つのイメージに詰め込み、本番用イメージにビルドツールやソースコード一式まで残ってしまい、サイズが肥大化することです。

実務では本番環境向けのイメージを軽量かつセキュアに保つための標準的なテクニックとして、フロントエンド・バックエンド問わず広く使われています。

Docker
試してみよう(疑似ターミナルへの入力例)
docker build -t myapp .

🧑‍💻 このコマンドは Dockerの疑似ターミナル に実際に入力して試せます(このページ自体には操作可能なターミナルはありません)。

🎯
ここまでできればゴール達成!
ビルドとコンテナ実行の環境を分けて、軽量なイメージを作れるようになります。
広告スペース(バナー)
広告スペース(記事内)