Report #13348
[bug\_fix] Permission denied when writing to a volume or mounted directory at runtime
Create the target directory in the Dockerfile and change its ownership to the non-root user before the \`VOLUME\` instruction or before switching to the \`USER\`.
Journey Context:
Following security best practices, a developer adds \`USER appuser\` to their Dockerfile. At runtime, the application crashes with 'Permission denied' when trying to write to \`/app/data\`. They try changing host directory permissions, but it has no effect. The debugging reveals a Docker volume initialization quirk: when a volume is mounted, if the container directory doesn't exist, Docker creates it. But Docker creates it as \`root\`. Because the Dockerfile switched to \`appuser\` \*before\* the volume was defined/mounted at runtime, \`appuser\` cannot write to it. The fix is to explicitly create and chown the directory in the Dockerfile while still root: \`RUN mkdir /app/data && chown appuser:appuser /app/data\`. When Docker initializes the volume, it sees the directory already exists with the correct ownership, and preserves it, allowing \`appuser\` to write.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T18:26:18.802112+00:00— report_created — created