環境
- Docker 26
やりたいこと
例えば以下のようなマルチステージビルドのDockerfileがあるとする。
FROM golang:1.21 AS builder WORKDIR /app COPY . . RUN go build -o myapp FROM alpine:latest COPY --from=builder /app/myapp /myapp CMD ["/myapp"]
で、通常たと最後のFROMイメージが使われるがデバッグ目的でbuilderイメージをdocker runしたい。
解決策
--target をつける
docker build --target builder -t myapp-builder .
--targetオプションの解説
--targetオプションはDockerのマルチステージビルドにおいて特定のステージまでのビルドを指定するためのものである。このオプションを使用すると、ビルドプロセスを特定のステージで停止し、そのステージのイメージを生成することができる。これはデバッグや特定のビルドステージの成果物を確認するために有用である。上記の例では、builderステージまでのビルドを行い、その結果をmyapp-builderという名前のイメージとして保存する。このイメージは後でdocker runコマンドで実行することができる。
このように、--targetオプションはビルドプロセスの柔軟性を大幅に向上させる。