Spaces:
Runtime error
Runtime error
| 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 |