chore: add Dockerfile and docker-compose.yml for NAS deployment
This commit is contained in:
+24
@@ -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"]
|
||||||
@@ -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
@@ -794,8 +794,10 @@ function startServer() {
|
|||||||
server.listen(PORT, () => {
|
server.listen(PORT, () => {
|
||||||
console.log(`CatMata Sub2Proxy 控制面板已启动!`);
|
console.log(`CatMata Sub2Proxy 控制面板已启动!`);
|
||||||
console.log(`本地访问地址: http://localhost:${PORT}`);
|
console.log(`本地访问地址: http://localhost:${PORT}`);
|
||||||
console.log(`正在自动打开默认浏览器...`);
|
if (process.env.HEADLESS !== 'true') {
|
||||||
openBrowser(`http://localhost:${PORT}`);
|
console.log(`正在自动打开默认浏览器...`);
|
||||||
|
openBrowser(`http://localhost:${PORT}`);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user