From ec6b3cb93f4f1f00eb83f10f1400d3d7c2214f3c Mon Sep 17 00:00:00 2001 From: jocayn <1579649885@qq.com> Date: Sat, 13 Jun 2026 15:56:22 +0800 Subject: [PATCH] chore: add Dockerfile and docker-compose.yml for NAS deployment --- Dockerfile | 24 ++++++++++++++++++++++++ docker-compose.yml | 16 ++++++++++++++++ sub2proxy.js | 6 ++++-- 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f61de71 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +FROM node:22-alpine + +WORKDIR /app + +# 复制依赖配置并安装 +COPY package*.json ./ +RUN npm install --production + +# 复制其余的项目代码 +COPY sub2proxy.js ./ +COPY public/ ./public/ +COPY templates/ ./templates/ + +# 创建持久化存储的目录与文件 +RUN mkdir -p out + +# 暴露 3000 端口 +EXPOSE 3000 + +# 环境变量:让服务不自动在后台执行浏览器拉起命令 +ENV HEADLESS=true + +# 启动服务 +CMD ["node", "sub2proxy.js"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..bca47c1 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,16 @@ +services: + sub2proxy: + build: . + container_name: sub2proxy + ports: + - "3000:3000" + volumes: + # 映射订阅配置文件,防止容器重启后订阅丢失 + - ./subs.json:/app/subs.json + # 映射模板文件夹,方便在 NAS 目录下随时修改或添加自定义配置模板 + - ./templates:/app/templates + # 映射输出文件夹,生成的文件和历史记录将同步保存在 NAS 主机目录中 + - ./out:/app/out + restart: unless-stopped + environment: + - HEADLESS=true diff --git a/sub2proxy.js b/sub2proxy.js index c4e18bb..c7a64f6 100644 --- a/sub2proxy.js +++ b/sub2proxy.js @@ -794,8 +794,10 @@ function startServer() { server.listen(PORT, () => { console.log(`CatMata Sub2Proxy 控制面板已启动!`); console.log(`本地访问地址: http://localhost:${PORT}`); - console.log(`正在自动打开默认浏览器...`); - openBrowser(`http://localhost:${PORT}`); + if (process.env.HEADLESS !== 'true') { + console.log(`正在自动打开默认浏览器...`); + openBrowser(`http://localhost:${PORT}`); + } }); }