설명
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"]