Spaces:
Runtime error
Runtime error
| FROM node:20-slim AS builder | |
| WORKDIR /app | |
| # 1. 安装 git 并克隆最新官方源码 | |
| RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/* | |
| RUN git clone https://github.com/tashfeenahmed/freellmapi.git . | |
| # 2. 安装全部依赖 | |
| RUN npm install | |
| # 3. 编译所有子工作区(前端 + 后端) | |
| RUN npm run build | |
| # --- 生产运行环境 --- | |
| FROM node:20-slim AS runner | |
| WORKDIR /app | |
| # 4. 复制编译产物 | |
| COPY --from=builder /app ./ | |
| # 5. 开辟持久化目录 | |
| RUN mkdir -p /data/freellm | |
| # 6. 【绝杀技巧】:把前端打包出来的静态网页文件,直接物理复制进后端的静态资源公开目录下! | |
| # 这样当通过 7860 端口直接访问根目录时,后端会自动吐出前端管理面板 | |
| RUN cp -r client/dist/* server/dist/public/ 2>/dev/null || cp -r client/dist/* server/public/ 2>/dev/null || true | |
| # 7. 核心环境变量注入 | |
| EXPOSE 7860 | |
| ENV PORT=7860 | |
| ENV NODE_ENV=production | |
| ENV DATABASE_URL="file:/data/database.sqlite" | |
| # 8. 启动命令(保留内存软链接持久化机制) | |
| CMD ["sh", "-c", "rm -rf /app/server/data && ln -s /data/freellm /app/server/data && export ENCRYPTION_KEY=$(node -e \"console.log(require('crypto').randomBytes(32).toString('hex'))\") && node server/dist/index.js"] |