From bc89922aede27446d5174d5bcd63da4480cb4fbf Mon Sep 17 00:00:00 2001 From: DDSRem <1448139087@qq.com> Date: Mon, 28 Aug 2023 19:32:26 +0800 Subject: [PATCH] feat: from s6-overlay change to tini and su-exec --- Dockerfile | 28 ++++++------------- .../dependencies.d/init-old-compatible | 0 .../etc/s6-overlay/s6-rc.d/init-fixuser/run | 7 ----- .../etc/s6-overlay/s6-rc.d/init-fixuser/type | 1 - docker/etc/s6-overlay/s6-rc.d/init-fixuser/up | 1 - .../s6-rc.d/init-old-compatible/run | 8 ------ .../s6-rc.d/init-old-compatible/type | 1 - .../s6-overlay/s6-rc.d/init-old-compatible/up | 1 - .../dependencies.d/init-fixuser | 0 .../s6-overlay/s6-rc.d/svc-autobangumi/finish | 4 --- .../s6-rc.d/svc-autobangumi/notification-fd | 1 - .../s6-overlay/s6-rc.d/svc-autobangumi/run | 16 ----------- .../s6-overlay/s6-rc.d/svc-autobangumi/type | 1 - .../s6-rc.d/user/contents.d/init-fixuser | 0 .../user/contents.d/init-old-compatible | 0 .../s6-rc.d/user/contents.d/svc-autobangumi | 0 entrypoint.sh | 15 ++++++++++ 17 files changed, 24 insertions(+), 60 deletions(-) delete mode 100644 docker/etc/s6-overlay/s6-rc.d/init-fixuser/dependencies.d/init-old-compatible delete mode 100644 docker/etc/s6-overlay/s6-rc.d/init-fixuser/run delete mode 100644 docker/etc/s6-overlay/s6-rc.d/init-fixuser/type delete mode 100644 docker/etc/s6-overlay/s6-rc.d/init-fixuser/up delete mode 100644 docker/etc/s6-overlay/s6-rc.d/init-old-compatible/run delete mode 100644 docker/etc/s6-overlay/s6-rc.d/init-old-compatible/type delete mode 100644 docker/etc/s6-overlay/s6-rc.d/init-old-compatible/up delete mode 100644 docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/dependencies.d/init-fixuser delete mode 100644 docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/finish delete mode 100644 docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/notification-fd delete mode 100644 docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/run delete mode 100644 docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/type delete mode 100644 docker/etc/s6-overlay/s6-rc.d/user/contents.d/init-fixuser delete mode 100644 docker/etc/s6-overlay/s6-rc.d/user/contents.d/init-old-compatible delete mode 100644 docker/etc/s6-overlay/s6-rc.d/user/contents.d/svc-autobangumi create mode 100644 entrypoint.sh diff --git a/Dockerfile b/Dockerfile index 474ca56bd..9d66f04df 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,8 @@ # syntax=docker/dockerfile:1 -FROM alpine:3.18 AS APP +FROM alpine:3.18 -ENV S6_SERVICES_GRACETIME=30000 \ - S6_KILL_GRACETIME=60000 \ - S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 \ - S6_SYNC_DISKS=1 \ - TERM="xterm" \ - HOME="/ab" \ - LANG="C.UTF-8" \ +ENV LANG="C.UTF-8" \ TZ=Asia/Shanghai \ PUID=1000 \ PGID=1000 \ @@ -20,33 +14,29 @@ COPY backend/requirements.txt . RUN set -ex && \ apk add --no-cache \ bash \ - ca-certificates \ - coreutils \ - curl \ - jq \ - netcat-openbsd \ - procps-ng \ python3 \ py3-bcrypt \ py3-pip \ - s6-overlay \ + su-exec \ shadow \ + tini \ tzdata && \ python3 -m pip install --no-cache-dir --upgrade pip && \ sed -i '/bcrypt/d' requirements.txt && \ pip install --no-cache-dir -r requirements.txt && \ # Add user + mkdir -p /home/ab && \ addgroup -S ab -g 911 && \ - adduser -S ab -G ab -h /ab -s /bin/bash -u 911 && \ + adduser -S ab -G ab -h /home/ab -s /sbin/nologin -u 911 && \ # Clear rm -rf \ - /ab/.cache \ + /root/.cache \ /tmp/* COPY --chmod=755 backend/src/. . -COPY --chmod=755 docker/ / +COPY --chmod=755 entrypoint.sh /entrypoint.sh -ENTRYPOINT [ "/init" ] +ENTRYPOINT ["tini", "-g", "--", "/entrypoint.sh"] EXPOSE 7892 VOLUME [ "/app/config" , "/app/data" ] diff --git a/docker/etc/s6-overlay/s6-rc.d/init-fixuser/dependencies.d/init-old-compatible b/docker/etc/s6-overlay/s6-rc.d/init-fixuser/dependencies.d/init-old-compatible deleted file mode 100644 index e69de29bb..000000000 diff --git a/docker/etc/s6-overlay/s6-rc.d/init-fixuser/run b/docker/etc/s6-overlay/s6-rc.d/init-fixuser/run deleted file mode 100644 index be9eb81c3..000000000 --- a/docker/etc/s6-overlay/s6-rc.d/init-fixuser/run +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/with-contenv bash -# shellcheck shell=bash - -groupmod -o -g "${PGID}" ab -usermod -o -u "${PUID}" ab - -chown ab:ab -R /app /ab diff --git a/docker/etc/s6-overlay/s6-rc.d/init-fixuser/type b/docker/etc/s6-overlay/s6-rc.d/init-fixuser/type deleted file mode 100644 index 3d92b15f2..000000000 --- a/docker/etc/s6-overlay/s6-rc.d/init-fixuser/type +++ /dev/null @@ -1 +0,0 @@ -oneshot \ No newline at end of file diff --git a/docker/etc/s6-overlay/s6-rc.d/init-fixuser/up b/docker/etc/s6-overlay/s6-rc.d/init-fixuser/up deleted file mode 100644 index f1ee2c7c6..000000000 --- a/docker/etc/s6-overlay/s6-rc.d/init-fixuser/up +++ /dev/null @@ -1 +0,0 @@ -/etc/s6-overlay/s6-rc.d/init-fixuser/run \ No newline at end of file diff --git a/docker/etc/s6-overlay/s6-rc.d/init-old-compatible/run b/docker/etc/s6-overlay/s6-rc.d/init-old-compatible/run deleted file mode 100644 index d3fe1184c..000000000 --- a/docker/etc/s6-overlay/s6-rc.d/init-old-compatible/run +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/with-contenv bash -# shellcheck shell=bash - -umask ${UMASK} - -if [ -f /config/bangumi.json ]; then - mv /config/bangumi.json /app/data/bangumi.json -fi diff --git a/docker/etc/s6-overlay/s6-rc.d/init-old-compatible/type b/docker/etc/s6-overlay/s6-rc.d/init-old-compatible/type deleted file mode 100644 index 3d92b15f2..000000000 --- a/docker/etc/s6-overlay/s6-rc.d/init-old-compatible/type +++ /dev/null @@ -1 +0,0 @@ -oneshot \ No newline at end of file diff --git a/docker/etc/s6-overlay/s6-rc.d/init-old-compatible/up b/docker/etc/s6-overlay/s6-rc.d/init-old-compatible/up deleted file mode 100644 index 593601f19..000000000 --- a/docker/etc/s6-overlay/s6-rc.d/init-old-compatible/up +++ /dev/null @@ -1 +0,0 @@ -/etc/s6-overlay/s6-rc.d/init-old-compatible/run \ No newline at end of file diff --git a/docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/dependencies.d/init-fixuser b/docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/dependencies.d/init-fixuser deleted file mode 100644 index e69de29bb..000000000 diff --git a/docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/finish b/docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/finish deleted file mode 100644 index b1ccd97ab..000000000 --- a/docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/finish +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/with-contenv bash -# shellcheck shell=bash - -pkill -f 'python3 main.py' \ No newline at end of file diff --git a/docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/notification-fd b/docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/notification-fd deleted file mode 100644 index e440e5c84..000000000 --- a/docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/notification-fd +++ /dev/null @@ -1 +0,0 @@ -3 \ No newline at end of file diff --git a/docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/run b/docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/run deleted file mode 100644 index ea0d13470..000000000 --- a/docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/run +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/with-contenv bash -# shellcheck shell=bash - -umask ${UMASK} - -if [ -f /app/config/config.json ]; then - AB_PORT=$(jq '.program.webui_port' /app/config/config.json) -elif [ -f /app/config/config_dev.json ]; then - AB_PORT=$(jq '.program.webui_port' /app/config/config_dev.json) -else - AB_PORT=7892 -fi - -exec \ - s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z localhost ${AB_PORT}" \ - cd /app s6-setuidgid ab python3 main.py \ No newline at end of file diff --git a/docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/type b/docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/type deleted file mode 100644 index 1780f9f44..000000000 --- a/docker/etc/s6-overlay/s6-rc.d/svc-autobangumi/type +++ /dev/null @@ -1 +0,0 @@ -longrun \ No newline at end of file diff --git a/docker/etc/s6-overlay/s6-rc.d/user/contents.d/init-fixuser b/docker/etc/s6-overlay/s6-rc.d/user/contents.d/init-fixuser deleted file mode 100644 index e69de29bb..000000000 diff --git a/docker/etc/s6-overlay/s6-rc.d/user/contents.d/init-old-compatible b/docker/etc/s6-overlay/s6-rc.d/user/contents.d/init-old-compatible deleted file mode 100644 index e69de29bb..000000000 diff --git a/docker/etc/s6-overlay/s6-rc.d/user/contents.d/svc-autobangumi b/docker/etc/s6-overlay/s6-rc.d/user/contents.d/svc-autobangumi deleted file mode 100644 index e69de29bb..000000000 diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 000000000..080c6b21b --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# shellcheck shell=bash + +umask ${UMASK} + +if [ -f /config/bangumi.json ]; then + mv /config/bangumi.json /app/data/bangumi.json +fi + +groupmod -o -g "${PGID}" ab +usermod -o -u "${PUID}" ab + +chown ab:ab -R /app /home/ab + +exec su-exec "${PUID}:${PGID}" python3 main.py \ No newline at end of file