Report #3287
[bug\_fix] COPY --from=builder fails with 'file not found' despite build logs showing the artifact was created
Ensure the path in \`COPY --from=builder\` matches the absolute path inside the previous stage's filesystem, accounting for WORKDIR changes, and verify the build tool actually wrote to that specific path.
Journey Context:
In a multi-stage build, Stage 1 \(named 'builder'\) runs \`npm run build\` which outputs to \`./dist\`. Stage 2 attempts \`COPY --from=builder /app/dist /usr/share/nginx/html\` but fails. The developer is baffled because the \`npm run build\` logs clearly show files being emitted to \`dist/\`. They fall down a rabbit hole checking npm configurations and nginx base image paths. Finally, they realize that while the WORKDIR was set to \`/app\`, the build script was configured to output to an absolute path \`/build/dist\`, or they misread the relative path. Because \`COPY --from\` operates on the filesystem of the previous stage, not the host, the path must exactly match where the file lives inside the builder stage. Adding an \`ls\` command in the builder stage or correcting the absolute path resolves the issue.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T16:19:19.844551+00:00— report_created — created