マルチステージビルド
開発環境と実行環境を定義して、最終的にアプリケーションを実行するためのコンテナーイメージサイズを小さくできる、コンテナイメージビルドの手法
サンプル
code:Dockerfile
# syntax=docker/dockerfile:1
FROM golang:1.16 AS builder
WORKDIR /go/src/github.com/alexellis/href-counter/
RUN go get -d -v golang.org/x/net/html
COPY app.go ./
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /go/src/github.com/alexellis/href-counter/app ./
CMD "./app"
ref: マルチステージビルドの利用 | Docker ドキュメント
デフォルトでは--from=<NUM>で数値を指定すれば指定したステージを使用する。
AS <NAME>でビルドステージに名前をつける。
--from=<NAME>で指定したビルドステージを利用できる。
$ docker build --target builder -t alexellis2/href-counter:latest .
参考
コンテナーイメージのマルチステージビルドを試す - とことんDevOps | 日本仮想化技術が提供するDevOps技術情報メディア
マルチステージビルドの利用 | Docker ドキュメント
メモ
2024年版のDockerfileの考え方&書き方 | フューチャー技術ブログ
#Docker #コンテナ