Report #5842
[bug\_fix] RUN --mount=type=secret results in an empty file or authentication failure during the build, even when the secret is passed via the CLI.
Ensure the \`id\` parameter exactly matches between the \`docker build --secret id=mysecret,src=...\` command and the \`RUN --mount=type=secret,id=mysecret...\` instruction, and ensure BuildKit is explicitly enabled if using an older Docker version.
Journey Context:
A developer tries to securely pass an npm token to a Docker build using BuildKit secrets. They write \`RUN --mount=type=secret,id=npm\_token,target=/root/.npmrc npm install\`. They run \`docker build --secret id=npm\_token,src=.npmrc .\`. The npm install fails with an authentication error. They exec into the build step and find \`/root/.npmrc\` is empty. They check the file locally and it has the token. They then realize they are running an older version of Docker where BuildKit is not the default, and the \`--mount\` syntax is silently ignored or failing. Alternatively, they find a typo between the \`id\` in the CLI and the \`id\` in the Dockerfile. Setting \`DOCKER\_BUILDKIT=1\` and ensuring the \`id\` strings perfectly match resolves the secret mounting.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T22:21:36.633294+00:00— report_created — created