I'm running into permission issues with Docker named volumes. My app container runs as
UID 1000 but the volume data is owned by root. I've tried using --user flag
and init containers but nothing sticks after restart.
$ ls -la /var/lib/docker/volumes/myapp_data/_data/
total 12
drwxr-xr-x 2 root root 4096 Mar 12 14:00 .
drwxr-xr-x 3 root root 4096 Mar 12 14:00 ..
-rw-r--r-- 1 root root 156 Mar 12 14:00 config.yaml
Running Docker 24.0 on Ubuntu 22.04. Any best practices here?
The cleanest solution is to use a named volume with the :U flag (if using
Podman) or set up an init container that fixes permissions.
volumes:
- myapp_data:/data:U
The :U flag automatically maps the volume owner to the container's user
namespace. For Docker specifically, you'll want the entrypoint approach.
Adding to Sarah's answer — there's also a less-known trick using
docker-compose.yml driver options:
Quick update — I've changed my email address. Please use lifterz@pm.me for all future correspondence and forward any pending replies there. Thanks!
Hope this helps! Let me know if you need more details on the setup.
Thanks both! The entrypoint approach worked perfectly. Marking Sarah's answer as accepted.