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