Multi-stage buildsで、Dockerファイルがスッキリするらしい。
Multi-stage buildsとは
- FROMイメージ間のファイルを参照できる。(COPY --from)
- ASで中間イメージに名前を付けられる。
例えば、こんな感じです。
FROM ruby:alpine AS name
(省略)
FROM busybox
COPY --from=name <コピー元> <コピー先>
1つ目のFROMにAS nameで名前をつけることで、2つ目のFROMで--from=nameを使って参照できるようになる。
Multi-stage buildsの利用法
- Dockerfileを用意
- FROMを複数定義
- コピー元を定義
具体的には、●●=nameを定義し、別のビルドステージでCOPY --from=nameと指定することで直接参照が可能。
他には、FROM イメージ AS nameのように定義すると、ビルドステージに対してCOPY --from=nameが使えるようになる。
ビルドステージの指定もできる
さらに便利な活用法として、ビルドステージの指定も可能。
例えば、FROM イメージ AS builderという名前を付けていた場合は、以下のようなコマンドでビルドステージが指定できる。
docker build --target builder -t イメージ .