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. 编译所有子工作区(包含 server 和 client) | |
| RUN npm run build | |
| # --- 生产运行环境 --- | |
| FROM node:20-slim AS runner | |
| WORKDIR /app | |
| # 4. 全盘复制编译好的多工作区产物 | |
| COPY --from=builder /app ./ | |
| # 5. 开辟 Hugging Face 专属的持久化数据目录 | |
| RUN mkdir -p /data | |
| # 6. 核心环境变量注入 | |
| ENV PORT=7860 | |
| ENV NODE_ENV=production | |
| # 强行把 SQLite 数据库文件的生成位置指向你的持久化 Bucket 目录 | |
| ENV DATABASE_URL="file:/data/database.sqlite" | |
| # 【关键安全机制】:生成一个随机的 32 字节密钥供它启动时用于 AES 加密 | |
| # 这样你就不用手动在环境变量里去配置复杂的加密序列了 | |
| ENV ENCRYPTION_KEY="freellmapi_secret_key_javaeeduke99" | |
| # 7. 暴露端口 | |
| EXPOSE 7860 | |
| # 8. 降维打击入口点:直接进入后端服务子目录的编译产物中启动 | |
| CMD ["node", "server/dist/index.js"] |