File size: 1,162 Bytes
8a59281
 
 
 
3cad9f5
8a59281
 
 
2a67ddb
8a59281
3cad9f5
2a67ddb
8a59281
 
2a67ddb
8a59281
 
 
2a67ddb
8a59281
 
2a67ddb
3cad9f5
8a59281
2a67ddb
8a59281
 
2a67ddb
 
3cad9f5
 
2a67ddb
 
 
 
3cad9f5
 
8a59281
2a67ddb
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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"]