From fa895d62498dee4656bdd789c5945e837f920a6a Mon Sep 17 00:00:00 2001 From: DDSDerek <108336573+DDSDerek@users.noreply.github.com> Date: Sat, 29 Jul 2023 00:28:49 +0800 Subject: [PATCH 01/11] feat: optimization docker --- Dockerfile | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index e1905e41..09b70780 100644 --- a/Dockerfile +++ b/Dockerfile @@ -30,7 +30,12 @@ ENV LANG="C.UTF-8" \ WORKDIR "/app" COPY . . RUN apt-get update \ - && apt-get -y install musl-dev nginx gettext-base \ + && apt-get -y install \ + musl-dev \ + nginx \ + gettext-base \ + locales \ + procps \ && mkdir -p /etc/nginx \ && cp -f nginx.conf /etc/nginx/nginx.template.conf \ && pip install -r requirements.txt \ @@ -38,8 +43,15 @@ RUN apt-get update \ && echo "/app/" > /usr/local/lib/python${python_ver%.*}/site-packages/app.pth \ && echo 'fs.inotify.max_user_watches=5242880' >> /etc/sysctl.conf \ && echo 'fs.inotify.max_user_instances=5242880' >> /etc/sysctl.conf \ + && locale-gen zh_CN.UTF-8 \ && playwright install-deps chromium \ - && rm -rf /root/.cache/ + && apt-get autoremove -y \ + && apt-get clean -y \ + && rm -rf \ + /tmp/* \ + /root/.cache \ + /var/lib/apt/lists/* \ + /var/tmp/* EXPOSE 3000 VOLUME ["/config"] ENTRYPOINT [ "bash", "-c", "/app/start.sh & nginx -g 'daemon off;'" ] From efd8ff6f285a1539b5f63591bd95b28a291524e6 Mon Sep 17 00:00:00 2001 From: DDSDerek <108336573+DDSDerek@users.noreply.github.com> Date: Sat, 29 Jul 2023 00:29:34 +0800 Subject: [PATCH 02/11] feat: add gosu package --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 09b70780..e9dc9efd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -36,6 +36,7 @@ RUN apt-get update \ gettext-base \ locales \ procps \ + gosu \ && mkdir -p /etc/nginx \ && cp -f nginx.conf /etc/nginx/nginx.template.conf \ && pip install -r requirements.txt \ From 5914d5a05d9c96202e34b7a7f58b828d3aec5a02 Mon Sep 17 00:00:00 2001 From: DDSDerek <108336573+DDSDerek@users.noreply.github.com> Date: Sat, 29 Jul 2023 00:35:52 +0800 Subject: [PATCH 03/11] feat: add moviepilot user --- Dockerfile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index e9dc9efd..49ea2338 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,7 @@ FROM python:3.10.11-slim ENV LANG="C.UTF-8" \ + HOME="/moviepilot" \ + TERM="xterm" \ TZ="Asia/Shanghai" \ PUID=0 \ PGID=0 \ @@ -37,8 +39,11 @@ RUN apt-get update \ locales \ procps \ gosu \ - && mkdir -p /etc/nginx \ + bash \ + && mkdir -p /etc/nginx ${HOME} \ && cp -f nginx.conf /etc/nginx/nginx.template.conf \ + && groupadd -r moviepilot -g 911 \ + && useradd -r moviepilot -g moviepilot -d ${HOME} -s /bin/bash -u 911 \ && pip install -r requirements.txt \ && python_ver=$(python3 -V | awk '{print $2}') \ && echo "/app/" > /usr/local/lib/python${python_ver%.*}/site-packages/app.pth \ From a446cf327135e4a4a8a57dac265ec3015f99b7b1 Mon Sep 17 00:00:00 2001 From: DDSDerek <108336573+DDSDerek@users.noreply.github.com> Date: Sat, 29 Jul 2023 00:41:47 +0800 Subject: [PATCH 04/11] feat: puid pgid set --- start.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/start.sh b/start.sh index f1d7425b..503c55bf 100644 --- a/start.sh +++ b/start.sh @@ -3,7 +3,11 @@ umask ${UMASK} # 使用 `envsubst` 将模板文件中的 ${NGINX_PORT} 替换为实际的环境变量值 envsubst '${NGINX_PORT}' < /etc/nginx/nginx.template.conf > /etc/nginx/nginx.conf +# 更改 moviepilot userid 和 groupid +groupmod -o -g ${PGID} moviepilot +usermod -o -u ${PUID} moviepilot +chown -R moviepilot:moviepilot ${HOME} /app # 下载浏览器内核 -playwright install chromium +gosu moviepilot:moviepilot playwright install chromium # 启动后端服务 -python3 app/main.py +gosu moviepilot:moviepilot python3 app/main.py From 27b386c6375a5c2808d2b891659d7687d94a1bf8 Mon Sep 17 00:00:00 2001 From: DDSDerek <108336573+DDSDerek@users.noreply.github.com> Date: Sat, 29 Jul 2023 01:00:05 +0800 Subject: [PATCH 05/11] fix: config permissions --- start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start.sh b/start.sh index 503c55bf..97d679ab 100644 --- a/start.sh +++ b/start.sh @@ -6,7 +6,7 @@ envsubst '${NGINX_PORT}' < /etc/nginx/nginx.template.conf > /etc/nginx/nginx.con # 更改 moviepilot userid 和 groupid groupmod -o -g ${PGID} moviepilot usermod -o -u ${PUID} moviepilot -chown -R moviepilot:moviepilot ${HOME} /app +chown -R moviepilot:moviepilot ${HOME} /app /config # 下载浏览器内核 gosu moviepilot:moviepilot playwright install chromium # 启动后端服务 From 4fe4d928ed086b867dd466d17fd8c6839aa53c73 Mon Sep 17 00:00:00 2001 From: DDSDerek <108336573+DDSDerek@users.noreply.github.com> Date: Sat, 29 Jul 2023 03:55:24 +0800 Subject: [PATCH 06/11] feat: optimize the build process --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 49ea2338..ae538acb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -40,17 +40,18 @@ RUN apt-get update \ procps \ gosu \ bash \ + && playwright install-deps chromium \ && mkdir -p /etc/nginx ${HOME} \ && cp -f nginx.conf /etc/nginx/nginx.template.conf \ && groupadd -r moviepilot -g 911 \ && useradd -r moviepilot -g moviepilot -d ${HOME} -s /bin/bash -u 911 \ + && pip install --upgrade pip \ && pip install -r requirements.txt \ && python_ver=$(python3 -V | awk '{print $2}') \ && echo "/app/" > /usr/local/lib/python${python_ver%.*}/site-packages/app.pth \ && echo 'fs.inotify.max_user_watches=5242880' >> /etc/sysctl.conf \ && echo 'fs.inotify.max_user_instances=5242880' >> /etc/sysctl.conf \ && locale-gen zh_CN.UTF-8 \ - && playwright install-deps chromium \ && apt-get autoremove -y \ && apt-get clean -y \ && rm -rf \ From 40703a0bd7ff6ef4f050c89403b0a713eb35eedf Mon Sep 17 00:00:00 2001 From: DDSDerek <108336573+DDSDerek@users.noreply.github.com> Date: Sat, 29 Jul 2023 03:57:29 +0800 Subject: [PATCH 07/11] fix: pip cache dir --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index ae538acb..e3866a80 100644 --- a/Dockerfile +++ b/Dockerfile @@ -56,7 +56,7 @@ RUN apt-get update \ && apt-get clean -y \ && rm -rf \ /tmp/* \ - /root/.cache \ + /moviepilot/.cache \ /var/lib/apt/lists/* \ /var/tmp/* EXPOSE 3000 From 85be676b2ba14383c0bfce669ae1dc9588155233 Mon Sep 17 00:00:00 2001 From: DDSDerek <108336573+DDSDerek@users.noreply.github.com> Date: Sat, 29 Jul 2023 04:01:44 +0800 Subject: [PATCH 08/11] fix: playwight install chromium depends --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index e3866a80..1cce9585 100644 --- a/Dockerfile +++ b/Dockerfile @@ -40,13 +40,13 @@ RUN apt-get update \ procps \ gosu \ bash \ - && playwright install-deps chromium \ && mkdir -p /etc/nginx ${HOME} \ && cp -f nginx.conf /etc/nginx/nginx.template.conf \ && groupadd -r moviepilot -g 911 \ && useradd -r moviepilot -g moviepilot -d ${HOME} -s /bin/bash -u 911 \ && pip install --upgrade pip \ && pip install -r requirements.txt \ + && playwright install-deps chromium \ && python_ver=$(python3 -V | awk '{print $2}') \ && echo "/app/" > /usr/local/lib/python${python_ver%.*}/site-packages/app.pth \ && echo 'fs.inotify.max_user_watches=5242880' >> /etc/sysctl.conf \ From b6115499d061430eb36d04914270e984f32ae9ba Mon Sep 17 00:00:00 2001 From: DDSDerek <108336573+DDSDerek@users.noreply.github.com> Date: Sat, 29 Jul 2023 08:13:55 +0800 Subject: [PATCH 09/11] feat: use exec to replace the start process to optimize memory usage --- start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start.sh b/start.sh index 97d679ab..f96b693f 100644 --- a/start.sh +++ b/start.sh @@ -10,4 +10,4 @@ chown -R moviepilot:moviepilot ${HOME} /app /config # 下载浏览器内核 gosu moviepilot:moviepilot playwright install chromium # 启动后端服务 -gosu moviepilot:moviepilot python3 app/main.py +exec gosu moviepilot:moviepilot python3 app/main.py From b82f9725e97f0f7d328f2408a9716b568af1c85c Mon Sep 17 00:00:00 2001 From: DDSDerek <108336573+DDSDerek@users.noreply.github.com> Date: Sat, 29 Jul 2023 08:24:36 +0800 Subject: [PATCH 10/11] fix: process startup sequence --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 1cce9585..d09890ed 100644 --- a/Dockerfile +++ b/Dockerfile @@ -61,4 +61,4 @@ RUN apt-get update \ /var/tmp/* EXPOSE 3000 VOLUME ["/config"] -ENTRYPOINT [ "bash", "-c", "/app/start.sh & nginx -g 'daemon off;'" ] +ENTRYPOINT [ "/app/start.sh" ] From bbde312297aeebf6b136517a365204e3db152326 Mon Sep 17 00:00:00 2001 From: DDSDerek <108336573+DDSDerek@users.noreply.github.com> Date: Sat, 29 Jul 2023 08:27:41 +0800 Subject: [PATCH 11/11] fix: optimize init script command order --- start.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/start.sh b/start.sh index f96b693f..645b8cb8 100644 --- a/start.sh +++ b/start.sh @@ -1,13 +1,17 @@ -#!/bin/sh +#!/bin/bash -umask ${UMASK} # 使用 `envsubst` 将模板文件中的 ${NGINX_PORT} 替换为实际的环境变量值 envsubst '${NGINX_PORT}' < /etc/nginx/nginx.template.conf > /etc/nginx/nginx.conf # 更改 moviepilot userid 和 groupid groupmod -o -g ${PGID} moviepilot usermod -o -u ${PUID} moviepilot +# 更改文件权限 chown -R moviepilot:moviepilot ${HOME} /app /config # 下载浏览器内核 gosu moviepilot:moviepilot playwright install chromium +# 启动前端nginx服务 +nginx +# 设置后端服务权限掩码 +umask ${UMASK} # 启动后端服务 exec gosu moviepilot:moviepilot python3 app/main.py