diff --git a/.dockerignore b/.dockerignore index f5079239501a3280f7f2a800a42c9160bb747502..658ccf7417b5dd43b55c7f972655e844552cd491 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,3 +2,4 @@ !Pipfile* !poca.xml !crontab +!entrypoint diff --git a/Dockerfile b/Dockerfile index eb18780723212f825d77f88ccab9fc2c69236235..38ee10e4c8fe8153c3b861fbc273a27b12e436cb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,6 +3,10 @@ FROM registry.shore.co.il/cron as supersonic FROM registry.hub.docker.com/library/python:3.6-alpine3.13 COPY --from=supersonic /usr/local/bin/supersonic /usr/local/bin/ +# hadolint ignore=DL3018 +RUN apk add --update --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing/ \ + gosu \ + ; # hadolint ignore=DL3013 RUN pip install --no-cache-dir pipenv WORKDIR /poquita @@ -16,7 +20,8 @@ RUN apk add --update --no-cache --virtual .lxml-build build-base git libxslt-dev RUN mkdir --mode 777 db Podcasts COPY --chown=root:root crontab ./ COPY --chown=root:root poca.xml ./ +COPY --chown=root:root entrypoint /usr/local/sbin/docker-entrypoint VOLUME db Podcasts +ENTRYPOINT ["docker-entrypoint"] CMD [ "supersonic", "crontab" ] -USER nobody HEALTHCHECK CMD pgrep supersonic diff --git a/docker-compose.yml b/docker-compose.yml index 30900b6ab2f7060b8906e6687c250bfa8c471294..97a545bbd6f4f768101bfb1469f76697dd550b0a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,10 +5,7 @@ services: build: context: ./ restart: on-failure - user: nimrod volumes: - - /etc/group:/etc/group:ro - - /etc/passwd:/etc/passwd:ro - /srv/library/nimrod/Podcasts:/poquita/Podcasts - poquita:/poquita/db diff --git a/entrypoint b/entrypoint new file mode 100755 index 0000000000000000000000000000000000000000..59b7d5db72077c87c237b418220cbed7bf582e7b --- /dev/null +++ b/entrypoint @@ -0,0 +1,9 @@ +#!/bin/sh +set -eu + +[ "$(id -u)" = "0" ] || { echo "Not running as root, continuing as the current user."; eval exec "$@"; } +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; } +uid="$(stat Podcasts -c '%u')" +gid="$(stat Podcasts -c '%g')" +eval exec gosu "$uid:$gid" "$@"