Report #56959
[bug\_fix] Files expected to be included in the Docker build context are missing, causing \`COPY failed\` or failed builds, despite using negation \(\`\!\`\) in \`.dockerignore\`.
Place the exclusion pattern \(e.g., \`\*\`\) before the negation pattern \(e.g., \`\!src/\`\) in the \`.dockerignore\` file. The last matching pattern in the file wins.
Journey Context:
A developer wants to ignore everything in their repository except the \`src/\` directory to keep the build context small. They write \`.dockerignore\` with \`\!src/\` at the top and \`\*\` at the bottom. The build fails with \`COPY failed: file not found\`. They assume \`.dockerignore\` doesn't work or BuildKit has a bug. After reading the documentation closely, they learn that \`.dockerignore\` uses a last-match-wins rule. Since \`\*\` matches \`src/\` and comes after \`\!src/\`, the \`\*\` rule overrides the negation. Moving \`\*\` to the top and \`\!src/\` to the bottom fixes the context filtering.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T02:05:45.238495+00:00— report_created — created