From 4721fa10577090176b827b84f6f95d0e31a945f1 Mon Sep 17 00:00:00 2001 From: Adar Nimrod <nimrod@shore.co.il> Date: Sat, 6 Mar 2021 21:42:38 +0200 Subject: [PATCH] A different approach for proper user setting. Get the uid and gid from the owner and group of the Downloads folder (if it exists). Use /var/lib/transmission as both the home directory and Transmission' home directory (instead of ~/.config/transmission-daemon). No need to set the user or mount /etc/passwd in the Compose config. --- daemon/Dockerfile | 11 +++++------ daemon/entrypoint | 17 +++++++++++++---- docker-compose.yml | 2 -- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/daemon/Dockerfile b/daemon/Dockerfile index f862956..3cca629 100644 --- a/daemon/Dockerfile +++ b/daemon/Dockerfile @@ -6,15 +6,14 @@ RUN apk add --update --no-cache --repository http://dl-cdn.alpinelinux.org/alpin apk add --update --no-cache \ transmission-daemon \ && \ - install -d -m 555 /var/lib/transmission && \ - mkdir -m 777 /run/transmission && \ - mkdir /etc/transmission -COPY --chown=root:root entrypoint / -COPY settings.json /etc/transmission/ + mkdir -m 777 /run/transmission +COPY --chown=root:root entrypoint /usr/local/sbin/docker-entrypoint +COPY --chown=root:root settings.json /etc/transmission/ VOLUME /var/lib/transmission WORKDIR /var/lib/transmission ENV HOME /var/lib/transmission +ENV TRANSMISSION_HOME /var/lib/transmission EXPOSE 9091 51413/tcp 51413/udp -ENTRYPOINT [ "/entrypoint" ] +ENTRYPOINT [ "docker-entrypoint" ] CMD [ "transmission-daemon", "--foreground" ] HEALTHCHECK CMD wget --spider http://localhost:9091/transmission || exit 1 diff --git a/daemon/entrypoint b/daemon/entrypoint index b0cc9c1..de78f34 100755 --- a/daemon/entrypoint +++ b/daemon/entrypoint @@ -1,8 +1,17 @@ #!/bin/sh set -eux -mkdir -p /var/lib/transmission/downloads -install -d -o transmission -g transmission -m 750 /var/lib/transmission/.config/transmission-daemon/ -install -o transmission -g transmission -m 640 /etc/transmission/settings.json /var/lib/transmission/.config/transmission-daemon/settings.json +command -v stat > /dev/null || { echo "Can't find stat, exiting."; exit 1; } +command -v gosu > /dev/null || { echo "Can't find gosu, exiting."; exit 1; } -eval exec gosu "transmission:transmission" "$@" +ln -sf /etc/transmission/settings.json ./settings.json + +if [ -d ./Downloads ] && [ "$(id -u)" -eq '0' ] +then + uid="$(stat ./Downloads -c '%u')" + gid="$(stat ./Downloads -c '%g')" + chown "$uid:$gid" ./ + eval exec gosu "$uid:$gid" "$@" +else + eval exec "$@" +fi diff --git a/docker-compose.yml b/docker-compose.yml index 19e44c0..e5bf334 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,8 +9,6 @@ services: - 51413:51413/tcp - 51413:51413/udp volumes: - - /etc/group:/etc/group:ro - - /etc/passwd:/etc/passwd:ro - daemon:/var/lib/transmission - /srv/library:/var/lib/transmission/downloads restart: always -- GitLab