Report #137
[bug\_fix] failed to solve: failed to parse stage name "builder": invalid reference format; or 'no such stage'; or COPY --from=0 breaks after adding a new earlier stage
Name every stage explicitly with \`AS \` and reference the exact name in \`COPY --from=\`. Avoid numeric indexes \(\`--from=0\`\) because adding or reordering stages breaks them. Example: \`FROM golang:1.22 AS builder\` then \`COPY --from=builder /app/bin .\`
Journey Context:
You start with a single-stage Dockerfile, then refactor to multi-stage. You add \`FROM golang:1.22 AS builder\` and later \`COPY --from=builder /app/myapp /usr/local/bin/\`. BuildKit errors with 'no such stage' or 'invalid reference format'. You re-read the name and it looks identical. The common pitfall is either a typo in the AS name, using a variable that isn't in scope, or relying on numeric indexes: \`COPY --from=0\` refers to the first stage, which changes when you insert a new \`FROM\` above it. Naming stages explicitly and referencing names literally removes this fragility. After switching to named stages, multi-stage copies become stable regardless of how you reorder stages.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-12T18:35:18.132911+00:00— report_created — created