マルチステージビルド
開発環境と実行環境を定義して、最終的にアプリケーションを実行するためのコンテナーイメージサイズを小さくできる、コンテナイメージビルドの手法
サンプル
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 ./
デフォルトでは--from=<NUM>で数値を指定すれば指定したステージを使用する。
AS <NAME>でビルドステージに名前をつける。
--from=<NAME>で指定したビルドステージを利用できる。
$ docker build --target builder -t alexellis2/href-counter:latest .
参考
メモ