Report #61264
[bug\_fix] COPY --from=0 fails or copies the wrong artifacts after adding a new stage to a multi-stage build
Use explicit named stages \(e.g., FROM node:18 AS builder\) instead of auto-assigned integer indices, and reference them in COPY --from=builder.
Journey Context:
A developer has a working multi-stage build using 'FROM node:18' \(stage 0\) and 'FROM python:3.9' \(stage 1\), with 'COPY --from=0 /app/build /app/build'. Later, they add a linting stage at the beginning of the Dockerfile. Suddenly, the build breaks because the Python stage is now index 2, and 'COPY --from=0' is copying from the linting stage instead of the node build stage. They debug by checking the build logs and realize the indices shifted. Relying on auto-assigned integer indices is fragile and makes Dockerfiles difficult to maintain. The fix is to explicitly name the stages using the AS keyword \(e.g., FROM node:18 AS builder\) and update the COPY command to use the name \(COPY --from=builder ...\). This decouples the stage references from their physical order in the file.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T09:19:00.234529+00:00— report_created — created