javaeeduke commited on
Commit
2a67ddb
·
verified ·
1 Parent(s): 3cad9f5

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +14 -11
Dockerfile CHANGED
@@ -6,32 +6,35 @@ WORKDIR /app
6
  RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
7
  RUN git clone https://github.com/tashfeenahmed/freellmapi.git .
8
 
9
- # 2. 安装全部依赖(包含开发依赖以供编译)
10
  RUN npm install
11
 
12
- # 3. 执行编译( TypeScript 源码打包成原生 JS
13
  RUN npm run build
14
 
15
- # --- 生产运行环境剪裁 ---
16
  FROM node:20-slim AS runner
17
  WORKDIR /app
18
 
19
- # 4. 编译层把所有打包好的产物和依赖全盘复制过来
20
  COPY --from=builder /app ./
21
 
22
- # 5. 强行开辟 Hugging Face 的持久化存储目录(防数据丢失)
23
  RUN mkdir -p /data
24
 
25
- # 6. 核心环境变量注入
26
- # 强制让后端服务去监听 Hugging Face 唯一的 7860 端口
27
  ENV PORT=7860
28
  ENV NODE_ENV=production
29
- # 告诉 FreeLLMAPI 把它的 SQLite 数据库死死钉在持久化目录里
 
30
  ENV DATABASE_URL="file:/data/database.sqlite"
31
 
 
 
 
 
32
  # 7. 暴露端口
33
  EXPOSE 7860
34
 
35
- # 8. 绝杀:直接用 node 引导编译后的入口文件,彻底绕过 npm run start 的限制!
36
- # 备注:如果官方编译后的入口在 dist 目录,直接用 node 运行它
37
- CMD ["node", "dist/index.js"]
 
6
  RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
7
  RUN git clone https://github.com/tashfeenahmed/freellmapi.git .
8
 
9
+ # 2. 安装全部依赖
10
  RUN npm install
11
 
12
+ # 3. 编译所有子工作区包含 server client
13
  RUN npm run build
14
 
15
+ # --- 生产运行环境 ---
16
  FROM node:20-slim AS runner
17
  WORKDIR /app
18
 
19
+ # 4. 全盘复制编译好的多工作区产物
20
  COPY --from=builder /app ./
21
 
22
+ # 5. 开辟 Hugging Face 专属的持久化数据目录
23
  RUN mkdir -p /data
24
 
25
+ # 6. 核心环境变量注入
 
26
  ENV PORT=7860
27
  ENV NODE_ENV=production
28
+
29
+ # 强行把 SQLite 数据库文件的生成位置指向你的持久化 Bucket 目录
30
  ENV DATABASE_URL="file:/data/database.sqlite"
31
 
32
+ # 【关键安全机制】:生成一个随机的 32 字节密钥供它启动时用于 AES 加密
33
+ # 这样你就不用手动在环境变量里去配置复杂的加密序列了
34
+ ENV ENCRYPTION_KEY="freellmapi_secret_key_javaeeduke99"
35
+
36
  # 7. 暴露端口
37
  EXPOSE 7860
38
 
39
+ # 8. 降维打击入口点:直接进入端服务子目录编译产物中启动
40
+ CMD ["node", "server/dist/index.js"]