環境
- 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
オプションはビルドプロセスの柔軟性を大幅に向上させる。