From 9bd1507392060ffab9afeb39e73ad435d8c01d1c Mon Sep 17 00:00:00 2001 From: Jacky Date: Sun, 5 May 2024 12:24:26 +0800 Subject: [PATCH] feat(docker): integrate s6-overlay --- .gitignore | 1 + Dockerfile | 28 +++++++++++++++++++++------- resources/docker/init-config.sh | 12 ++++++++++++ resources/docker/init-config.up | 1 + resources/docker/nginx-ui.run | 2 ++ resources/docker/start.sh | 10 ---------- 6 files changed, 37 insertions(+), 17 deletions(-) create mode 100644 resources/docker/init-config.sh create mode 100644 resources/docker/init-config.up create mode 100644 resources/docker/nginx-ui.run delete mode 100644 resources/docker/start.sh diff --git a/.gitignore b/.gitignore index 067a079a..4cd04f42 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ database.db tmp node_modules +.pnpm-store app.ini dist *.exe diff --git a/Dockerfile b/Dockerfile index 1be8ed9f..50a1f68f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,17 +2,31 @@ FROM --platform=$TARGETPLATFORM uozi/nginx-ui-base:latest ARG TARGETOS ARG TARGETARCH ARG TARGETVARIANT -WORKDIR /app EXPOSE 80 443 -COPY resources/docker/start.sh /app/start.sh +# init config +COPY resources/docker/init-config.up /etc/s6-overlay/s6-rc.d/init-config/up +COPY resources/docker/init-config.sh /etc/s6-overlay/s6-rc.d/init-config/init-config.sh + +RUN chmod +x /etc/s6-overlay/s6-rc.d/init-config/init-config.sh && \ + echo 'oneshot' > /etc/s6-overlay/s6-rc.d/init-config/type && \ + touch /etc/s6-overlay/s6-rc.d/user/contents.d/init-config && \ + mkdir -p /etc/s6-overlay/s6-rc.d/nginx/dependencies.d && \ + touch /etc/s6-overlay/s6-rc.d/nginx/dependencies.d/init-config + +# register nginx-ui service +COPY resources/docker/nginx-ui.run /etc/s6-overlay/s6-rc.d/nginx-ui/run +RUN echo 'longrun' > /etc/s6-overlay/s6-rc.d/nginx-ui/type && \ + touch /etc/s6-overlay/s6-rc.d/user/contents.d/nginx-ui + +# copy nginx config COPY resources/docker/nginx.conf /usr/etc/nginx/nginx.conf COPY resources/docker/nginx-ui.conf /usr/etc/nginx/conf.d/nginx-ui.conf COPY resources/docker/nginx-ui.conf /etc/nginx/conf.d/nginx-ui.conf -COPY nginx-ui-$TARGETOS-$TARGETARCH$TARGETVARIANT/nginx-ui /app/nginx-ui -RUN cd /app && chmod a+x /app/start.sh \ - && rm -f /etc/nginx/conf.d/default.conf \ +# copy nginx-ui executable binary +COPY nginx-ui-$TARGETOS-$TARGETARCH$TARGETVARIANT/nginx-ui /usr/local/bin/nginx-ui + +# remove default nginx config +RUN rm -f /etc/nginx/conf.d/default.conf \ && rm -f /usr/etc/nginx/conf.d/default.conf - -ENTRYPOINT ["./start.sh"] diff --git a/resources/docker/init-config.sh b/resources/docker/init-config.sh new file mode 100644 index 00000000..adc6bbaa --- /dev/null +++ b/resources/docker/init-config.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# the up and down files are special: they're not shell scripts, +# but single command lines interpreted by execlineb. +# You should not have to worry about execline; +# you should only remember that an up file contains a single command line. + +if [ "$(ls -A /etc/nginx)" = "" ]; then + echo "[INFO] Initialing Nginx configurations directory" + cp -rp /usr/etc/nginx/* /etc/nginx/ + echo "[INFO] Nginx configurations directory initialed" +fi diff --git a/resources/docker/init-config.up b/resources/docker/init-config.up new file mode 100644 index 00000000..d76102a4 --- /dev/null +++ b/resources/docker/init-config.up @@ -0,0 +1 @@ +/etc/s6-overlay/s6-rc.d/init-config/init-config.sh diff --git a/resources/docker/nginx-ui.run b/resources/docker/nginx-ui.run new file mode 100644 index 00000000..835988ce --- /dev/null +++ b/resources/docker/nginx-ui.run @@ -0,0 +1,2 @@ +#!/bin/sh +nginx-ui --config /etc/nginx-ui/app.ini diff --git a/resources/docker/start.sh b/resources/docker/start.sh deleted file mode 100644 index fe0cc1cd..00000000 --- a/resources/docker/start.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -if [ "$(ls -A /etc/nginx)" = "" ]; then - echo "Initialing Nginx config dir" - cp -rp /usr/etc/nginx/* /etc/nginx/ - echo "Initialed Nginx config dir" -fi - -nginx & -/app/nginx-ui --config /etc/nginx-ui/app.ini