I’m not overly experienced with docker (I mostly just run a few containers) and have thrown together a build for an open source project called Watcher: https://github.com/ellnic/Watcher3
Things were working well until recently, and I need some input to pin point what is going wrong now.
Symptoms: docker seems unable to write files to the /config folder. This happens whether specifying a user with either PUID / GUID or —user. The config folder on the host always seems to be created as root. I was under the impression that specifying the --user flag or PUID/PGID would alter this? However, the problem also occurs if running with privileges so I am unsure if that is the issue anyway. The config folder on the host is always created as root, but remains empty. The logs show Watcher spewing a ton of errors because it cannot create/access a db. I tried recently adding a user for the container to run the command, but this doesn’t seem to have helped.
Docker hub: ellnic/watcher3
OS: Ubuntu 18.04
Client: Docker Engine - Community Version: 19.03.5 API version: 1.40 Go version: go1.12.12 Git commit: 633a0ea838 Built: Wed Nov 13 07:29:52 2019 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.5 API version: 1.40 (minimum version 1.12) Go version: go1.12.12 Git commit: 633a0ea838 Built: Wed Nov 13 07:28:22 2019 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.2.10 GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339 runc: Version: 1.0.0-rc8+dev GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657 docker-init: Version: 0.18.0 GitCommit: fec3683
FROM alpine:3.8 ENV LANG="en_US.utf8" APP_NAME="watcher3" IMG_NAME="watcher3" RUN apk add --no-cache bash curl git nano vim ca-certificates python3 RUN rm -rf /tmp/* /var/tmp/* # Create a group and user RUN addgroup -S watcher && adduser -S watcher -G watcher # Tell docker that all future commands should run as the watcher user USER watcher COPY . /opt/$APP_NAME WORKDIR /opt/watcher3 VOLUME /config EXPOSE 9090 CMD python3 /opt/$APP_NAME/watcher.py -c /config/watcher.cfg -l /config/logs/ --db /config/db/database.sqlite --plugins /config/plugins/ --posters /config/posters
Example run command:
docker run --name=watcher3-test -v /mnt/Docker/docker-configs/watcher3-test:/config -v /mnt/Files:/Files --user $(id -u):$(id -g) -p 9292:9090 --restart unless-stopped ellnic/watcher3
docker run --name=watcher3-test -v /mnt/Docker/docker-configs/watcher3-test:/config -v /mnt/Files:/Files -e PUID=1000 -e PGID=1000 -p 9292:9090 --restart unless-stopped ellnic/watcher3
Any help or pointers would be greatly appreciated