説明
COPY --from=0のようにビルドステージを番号で参照することは有効です。ただし、前にステージを追加したり順番を変更したりすると、参照先が変わることがあります。名前を使うと、ステージの順番への依存を減らせます。
想定される影響
ステージの順番を変更した後に、意図しないファイルをコピーしたり、ビルドに失敗したりするおそれがあります。
対処方法
参照するFROMステージにAS builderのような一意の名前を付け、COPY --from=builderで参照してください。
例
同じ成果物を番号と名前で参照する例です。GO_BUILD_IMAGEとRUNTIME_IMAGEにはサポート対象のイメージ参照を指定し、成果物のプラットフォームや実行時ライブラリが実行用イメージと互換性があることを確認してください。
変更前
dockerfile
ARG GO_BUILD_IMAGE
ARG RUNTIME_IMAGE
FROM ${GO_BUILD_IMAGE}
WORKDIR /src
COPY . .
RUN go build -o app .
FROM ${RUNTIME_IMAGE}
COPY --from=0 /src/app /app/app
CMD ["/app/app"]
変更後
dockerfile
ARG GO_BUILD_IMAGE
ARG RUNTIME_IMAGE
FROM ${GO_BUILD_IMAGE} AS builder
WORKDIR /src
COPY . .
RUN go build -o app .
FROM ${RUNTIME_IMAGE}
COPY --from=builder /src/app /app/app
CMD ["/app/app"]