javaeeduke commited on
Commit
4c2e97f
·
verified ·
1 Parent(s): 9a9d9c6

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +20 -18
Dockerfile CHANGED
@@ -1,9 +1,6 @@
1
  FROM node:22-alpine
2
-
3
  RUN apk add --no-cache sqlite sqlite-dev
4
-
5
  WORKDIR /app
6
-
7
  RUN npm install -g omniroute
8
 
9
  # 基础网络与环境配置
@@ -12,24 +9,29 @@ ENV OMNIROUTE_PORT=7860
12
  ENV HOST=0.0.0.0
13
  ENV NODE_ENV=production
14
 
15
- # 🔑 1. 在这里设置你想要的新密码(替换成你自己的密码)
16
  ENV INITIAL_PASSWORD=Amd3dnow!
17
-
18
  EXPOSE 7860
19
 
20
- # 2. 【核心重置魔法】在启动前,强制删掉任何可能残留的旧数据库和旧配置文件
21
- # 这样每次镜像重新构建启动时,都会被视为“第一次全新开机”,从而强行应用上面的新密码
22
- CMD rm -rf /root/.omniroute/storage.sqlite /root/.omniroute/settings.json data/settings.json 2>/dev/null || true; \
23
- omniroute
24
- # ... 前面的保持不变 ...
25
-
26
- # 启动命令改造:不影响前端,只做无感知的底层数据恢复
27
  CMD \
28
- # 1. 启动前:如果持久化目录有前的数据库备份,自动覆盖恢复到 OmniRoute 的运行目录
29
- if [ -f /data/omni_production.db ]; then cp /data/omni_production.db ./prisma/dev.db; fi; \
 
 
 
 
 
 
 
30
  \
31
- # 2. 异步监听:每隔 5 分钟,悄悄把当前最新的数据库文件备份到持久化目录,防止断电
32
- (while true; do sleep 300; if [ -f ./prisma/dev.db ]; then cp ./prisma/dev.db /data/omni_production.db; fi; done) & \
 
 
 
 
 
33
  \
34
- # 3. 正常启动原项目(完全不影响原本的 Web 端口和界面
35
- PORT=7860 node server.js
 
1
  FROM node:22-alpine
 
2
  RUN apk add --no-cache sqlite sqlite-dev
 
3
  WORKDIR /app
 
4
  RUN npm install -g omniroute
5
 
6
  # 基础网络与环境配置
 
9
  ENV HOST=0.0.0.0
10
  ENV NODE_ENV=production
11
 
12
+ # 🔑 设置新密码
13
  ENV INITIAL_PASSWORD=Amd3dnow!
 
14
  EXPOSE 7860
15
 
16
+ # 启动命令改造:修正核心启动文件问题
 
 
 
 
 
 
17
  CMD \
18
+ # 1. 强制清理旧配置应用新密码
19
+ rm -rf /root/.omniroute/storage.sqlite /root/.omniroute/settings.json data/settings.json 2>/dev/null || true; \
20
+ \
21
+ # 2. 启动前:如果持久化目录有以前的数据库备份,自动恢复到 omniroute 的默认数据目录
22
+ # (注意:全局安装的 CLI 数据库通常在 ~/.omniroute/ 目录下,这里需要根据它实际的数据库位置调整。
23
+ # 如果你确定它在当前目录的 ./prisma/dev.db,可以保持原样,这里我先按你写的路径恢复)
24
+ if [ -f /data/omni_production.db ]; then \
25
+ mkdir -p ./prisma && cp /data/omni_production.db ./prisma/dev.db; \
26
+ fi; \
27
  \
28
+ # 3. 异步监听:每隔 5 分钟,悄悄把当前最新的数据库文件备份到持久化目录
29
+ (while true; do \
30
+ sleep 300; \
31
+ if [ -f ./prisma/dev.db ]; then \
32
+ mkdir -p /data && cp ./prisma/dev.db /data/omni_production.db; \
33
+ fi; \
34
+ done) & \
35
  \
36
+ # 4. 正常启动原项目(改回原本的 omniroute 命令,而不是 node server.js
37
+ PORT=7860 omniroute