javaeeduke commited on
Commit
3cad9f5
·
verified ·
1 Parent(s): 8a59281

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +18 -10
Dockerfile CHANGED
@@ -2,28 +2,36 @@ FROM node:20-slim AS builder
2
 
3
  WORKDIR /app
4
 
5
- # 安装 git 以便拉取源码(如果需要)
6
  RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
7
-
8
- # 克隆官方项目仓库
9
  RUN git clone https://github.com/tashfeenahmed/freellmapi.git .
10
 
11
- # 安装依赖编译前端前端控制台(Vite)与后端服务器
12
  RUN npm install
 
 
13
  RUN npm run build
14
 
 
15
  FROM node:20-slim AS runner
16
  WORKDIR /app
17
 
18
- # 拷贝编译的产物
19
  COPY --from=builder /app ./
20
 
21
- # 暴露 Hugging Face 要求唯一公网端口
22
- EXPOSE 7860
23
 
24
- # 核心变量注入:强制让后端服务去监听 7860 端口
 
25
  ENV PORT=7860
26
  ENV NODE_ENV=production
 
 
 
 
 
27
 
28
- # 启动代理服务器
29
- CMD ["npm", "run", "start"]
 
 
2
 
3
  WORKDIR /app
4
 
5
+ # 1. 安装 git 并克隆最新官方源码
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"]