Report #93930
[bug\_fix] RUN --mount=type=secret fails with 'secret not found: secret id not found' or secret file is empty
Pass the secret explicitly during the build command using docker build --secret id=mysecret,src=/path/to/secret, and ensure the id in the CLI matches the id in the Dockerfile RUN instruction.
Journey Context:
A developer wants to securely authenticate with a private package registry during a build without leaving credentials in the image layers. They add RUN --mount=type=secret,id=npmrc,target=/root/.npmrc npm install to their Dockerfile. The build fails with 'secret not found'. They verify the .npmrc file exists locally on their host machine. The confusion deepens when they realize BuildKit is supposed to be secure, so why can't it see the file? The missing piece is that BuildKit operates on an explicit opt-in basis for host access. Unlike volume mounts in docker run, build secrets are not automatically forwarded from the host to the daemon. The developer must explicitly mount the secret into the build context via the CLI flag. Without the --secret flag on the docker build command, the daemon refuses to inject the file, causing the mount to fail.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T16:14:48.593090+00:00— report_created — created