Report #53122
[bug\_fix] COPY failed: stat /app/dist: file does not exist
Verify that the build command in the earlier stage executed successfully and produced the expected output in the exact absolute path. Add a \`RUN ls -la /app/dist\` step in the builder stage immediately before the \`COPY --from\` to confirm artifact creation, and ensure \`WORKDIR\` is set correctly in the source stage.
Journey Context:
A developer sets up a multi-stage Dockerfile. Stage 1 \(named 'builder'\) runs \`npm run build\`, and Stage 2 runs \`COPY --from=builder /app/dist /usr/share/nginx/html\`. The build fails immediately at the COPY step. The developer is confused because \`npm run build\` works perfectly on their local machine and the \`dist\` folder exists locally. They try changing the copy command to \`COPY --from=0\`, thinking the stage name resolution is broken. They also try modifying the \`.dockerignore\` file, assuming the context is being blocked. The rabbit hole deepens until they realize the \`npm run build\` script in the builder stage was failing silently \(returning a non-zero exit code that was ignored due to a shell script wrapper\), or that the \`WORKDIR /app\` was missing in the builder stage, causing the build output to land in the root directory \(\`/dist\`\) instead of \`/app/dist\`. The fix works because \`COPY --from\` operates strictly on the filesystem of the completed previous stage; if the artifact isn't exactly at the specified absolute path when the stage finishes, the copy will inevitably fail.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T19:39:35.632986+00:00— report_created — created