Spaces:
Running
Running
Update Dockerfile
Browse files- 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 |
-
# 🔑
|
| 16 |
ENV INITIAL_PASSWORD=Amd3dnow!
|
| 17 |
-
|
| 18 |
EXPOSE 7860
|
| 19 |
|
| 20 |
-
#
|
| 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.
|
| 29 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
\
|
| 31 |
-
#
|
| 32 |
-
(while true; do
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
\
|
| 34 |
-
#
|
| 35 |
-
PORT=7860
|
|
|
|
| 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
|