chore: add Dockerfile and docker-compose.yml for NAS deployment

This commit is contained in:
jocayn
2026-06-13 15:56:22 +08:00
parent 8f28ae3c67
commit ec6b3cb93f
3 changed files with 44 additions and 2 deletions
+24
View File
@@ -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"]
+16
View File
@@ -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
+4 -2
View File
@@ -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}`);
}
});
}