Report #84780
[bug\_fix] Permission denied when accessing secrets mounted with --mount=type=secret as non-root user
Specify the uid and gid in the mount instruction, e.g., RUN --mount=type=secret,id=mysecret,uid=1000,gid=1000 ..., or temporarily switch to USER root for the RUN instruction.
Journey Context:
A developer is building a secure Dockerfile. Following best practices, they switch to a non-root user early in the Dockerfile using USER appuser. Later, they need to pull a secret \(like an SSH key or npm token\) using RUN --mount=type=secret,id=npmrc,target=/root/.npmrc npm install. The build fails with a permission denied error when npm tries to read the secret. The developer checks the logs and realizes that BuildKit mounts secrets as root-owned by default \(uid 0, gid 0\). Since the RUN instruction executes as appuser, it cannot read the root-owned secret file. The fix is to add uid=1000,gid=1000 \(matching the appuser ID\) to the mount options so the secret is mounted with the correct ownership, allowing the non-root user to read it securely.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T00:53:43.251296+00:00— report_created — created