om / Dockerfile
javaeeduke's picture
Update Dockerfile
9a9d9c6 verified
FROM node:22-alpine
RUN apk add --no-cache sqlite sqlite-dev
WORKDIR /app
RUN npm install -g omniroute
# 基础网络与环境配置
ENV PORT=7860
ENV OMNIROUTE_PORT=7860
ENV HOST=0.0.0.0
ENV NODE_ENV=production
# 🔑 1. 在这里设置你想要的新密码(替换成你自己的密码)
ENV INITIAL_PASSWORD=Amd3dnow!
EXPOSE 7860
# 2. 【核心重置魔法】在启动前,强制删掉任何可能残留的旧数据库和旧配置文件
# 这样每次镜像重新构建启动时,都会被视为“第一次全新开机”,从而强行应用上面的新密码
CMD rm -rf /root/.omniroute/storage.sqlite /root/.omniroute/settings.json data/settings.json 2>/dev/null || true; \
omniroute
# ... 前面的保持不变 ...
# 启动命令改造:不影响前端,只做无感知的底层数据恢复
CMD \
# 1. 启动前:如果持久化目录有以前的数据库备份,自动覆盖恢复到 OmniRoute 的运行目录
if [ -f /data/omni_production.db ]; then cp /data/omni_production.db ./prisma/dev.db; fi; \
\
# 2. 异步监听:每隔 5 分钟,悄悄把当前最新的数据库文件备份到持久化目录,防止断电
(while true; do sleep 300; if [ -f ./prisma/dev.db ]; then cp ./prisma/dev.db /data/omni_production.db; fi; done) & \
\
# 3. 正常启动原项目(完全不影响原本的 Web 端口和界面)
PORT=7860 node server.js