Report #37980
[bug\_fix] Secret file is empty or missing inside the RUN command when using --mount=type=secret
Ensure the id in the Dockerfile --mount=type=secret,id=mysecret exactly matches the id in the docker build --secret id=mysecret,src=... command. Also, ensure the Dockerfile syntax directive \(\# syntax=docker/dockerfile:1\) is present to enable BuildKit features.
Journey Context:
A developer tries to use BuildKit's secret mounting to securely pass an SSH key or token for git clone or npm login. They add RUN --mount=type=secret,id=git\_token ... and run docker build --secret id=git\_token,src=./token.txt . Inside the RUN command, they try to read the secret from /run/secrets/git\_token, but it's empty or missing. They spend hours checking file permissions on the host, trying different absolute paths, and wondering if BuildKit is even active. They eventually notice a typo or mismatch between the id used in the docker build command and the id in the Dockerfile RUN mount. The id is the mapping key; if they don't match, BuildKit doesn't mount the secret. They align the IDs, and the secret appears correctly.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T18:13:48.525057+00:00— report_created — created