javaeeduke commited on
Commit
20ebd03
·
verified ·
1 Parent(s): eadc41e

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +13 -3
Dockerfile CHANGED
@@ -2,25 +2,35 @@ FROM node:20-slim AS builder
2
 
3
  WORKDIR /app
4
 
5
- # 冲刷缓存专用时间戳:2026-05-30
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
  RUN npm install
 
 
10
  RUN npm run build
11
 
12
  # --- 生产运行环境 ---
13
  FROM node:20-slim AS runner
14
  WORKDIR /app
15
 
 
16
  COPY --from=builder /app ./
17
 
18
- # 确保开辟目录
19
  RUN mkdir -p /data/freellm
20
 
 
 
 
 
 
21
  EXPOSE 7860
22
  ENV PORT=7860
23
  ENV NODE_ENV=production
 
24
 
25
- # 终极无敌运行命令(每次启动时在内存里做软链接绑定
26
  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"]
 
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. 编译所有子工作区(前端 + 后端)
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. 开辟持久化目录
23
  RUN mkdir -p /data/freellm
24
 
25
+ # 6. 【绝杀技巧】:把前端打包出来的静态网页文件,直接物理复制进后端的静态资源公开目录下!
26
+ # 这样当通过 7860 端口直接访问根目录时,后端会自动吐出前端管理面板
27
+ RUN cp -r client/dist/* server/dist/public/ 2>/dev/null || cp -r client/dist/* server/public/ 2>/dev/null || true
28
+
29
+ # 7. 核心环境变量注入
30
  EXPOSE 7860
31
  ENV PORT=7860
32
  ENV NODE_ENV=production
33
+ ENV DATABASE_URL="file:/data/database.sqlite"
34
 
35
+ # 8. 启动命令(保留内存软链接持久化机制
36
  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"]