mc6 commited on
Commit
f811aaa
·
verified ·
1 Parent(s): 6a05c0b

Create Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +51 -0
Dockerfile ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 使用轻量级 Alpine 作为基础构建镜像,体积小、安全性高
2
+ FROM alpine AS builder
3
+
4
+ # 安装必需的软件包:
5
+ # nodejs 和 npm 用于运行 Node.js 应用和安装依赖
6
+ # git 用于拉取项目代码
7
+ # curl 和 jq 用于脚本处理(网络请求和JSON解析)
8
+ # python3 及相关开发包和 pip,用于运行 Python 脚本和安装依赖
9
+ RUN apk add --no-cache nodejs npm git curl jq python3 python3-dev py3-pip
10
+
11
+ # 创建一个普通用户 app,避免用 root 运行容器,提高安全性
12
+ RUN adduser -D app
13
+
14
+ # 切换到 app 用户身份,后续操作都以 app 用户执行
15
+ USER app
16
+
17
+ # 设置工作目录为 /home/app
18
+ WORKDIR /home/app
19
+
20
+ # 克隆你的项目源码(这里是 site-alert 项目)
21
+ RUN git clone https://github.com/vipmc838/site-alert.git site-alert
22
+
23
+ # 进入项目目录
24
+ WORKDIR /home/app/site-alert
25
+
26
+ # 安装生产依赖(忽略开发依赖),并执行构建脚本下载前端资源
27
+ RUN npm ci --omit dev && npm run download-dist
28
+
29
+ # 设置 Python 虚拟环境路径,避免影响系统环境
30
+ ENV VIRTUAL_ENV=/home/app/venv
31
+
32
+ # 创建 Python 虚拟环境
33
+ RUN python3 -m venv $VIRTUAL_ENV
34
+
35
+ # 把虚拟环境的 bin 目录加入 PATH,确保运行 Python 和 pip 时使用虚拟环境
36
+ ENV PATH="$VIRTUAL_ENV/bin:$PATH"
37
+
38
+ # 安装 Python 依赖包 requests 和 webdavclient3,用于网络请求和 WebDAV 交互
39
+ RUN pip install --no-cache-dir requests webdavclient3
40
+
41
+ # 拷贝备份同步脚本到项目目录,并把文件属主设置为 app 用户,确保权限正确
42
+ COPY --chown=app:app backup_data.sh /home/app/site-alert/
43
+
44
+ # 给同步脚本添加可执行权限
45
+ RUN chmod +x /home/app/site-alert/backup_data.sh
46
+
47
+ # 容器对外暴露端口 7860(根据你的项目端口)
48
+ EXPOSE 7860
49
+
50
+ # 容器启动时,后台先运行备份脚本,等待30秒后启动主程序(node server/server.js)
51
+ CMD ["/bin/sh", "-c", "./backup_data.sh & sleep 30 && node server/server.js"]