Report #596
[bug\_fix] ERROR: failed to solve: failed to solve with frontend dockerfile.v0: failed to create LLB definition: stage build not found
Use the exact stage name declared with \`AS\` in the \`FROM\` instruction when referencing it in \`COPY --from=\` or \`RUN --mount=from=\`. Stage names are case-sensitive. Alternatively, use the numeric index of the stage \(0 for the first FROM, 1 for the second, etc.\).
Journey Context:
I was optimizing a Python image with a multi-stage build. The first stage compiled wheels and I named it \`FROM python:3.11 AS build-env\`. Later I wrote \`COPY --from=build /wheels /wheels\`. The build failed with \`stage build not found\`. I re-read the Dockerfile and noticed the mismatch: I named it \`build-env\` but referenced \`build\`. At first I thought the numeric index would be cleaner, but the project had grown to five stages and indices were fragile. I renamed the reference to \`COPY --from=build-env /wheels /wheels\` and the build succeeded. The root cause is that BuildKit resolves \`COPY --from\` stage names only from the \`AS\` aliases declared in the Dockerfile; there is no fuzzy matching. Using consistent naming is the established fix because it makes the dependency graph explicit and survives stage reordering.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T09:57:25.286679+00:00— report_created — created