3v324v23 commited on
Commit
676a94a
·
1 Parent(s): 7753218
Files changed (2) hide show
  1. .dockerignore +18 -0
  2. Dockerfile +25 -9
.dockerignore ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ node_modules
2
+ dist
3
+ .git
4
+ .github
5
+ .vscode
6
+ .vercel
7
+ android
8
+ ios
9
+ src-tauri
10
+ *.log
11
+ .env
12
+ .env.*
13
+ ! .env.example
14
+ data
15
+ uploads
16
+ concurrency.aof
17
+ concurrency_data.json
18
+ concurrency_snapshot.json
Dockerfile CHANGED
@@ -1,29 +1,45 @@
1
  # --- 基础镜像 ---
2
- FROM node:20-slim AS base
3
  ENV PNPM_HOME="/pnpm"
4
  ENV PATH="$PNPM_HOME:$PATH"
5
  RUN corepack enable
6
  WORKDIR /app
7
 
8
- # --- 依赖安装阶段 ---
9
- FROM base AS deps
 
 
 
 
 
 
 
10
  COPY package.json pnpm-lock.yaml ./
 
 
11
  RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
12
 
13
- # --- 构建阶段 ---
14
- FROM base AS builder
15
- COPY --from=deps /app/node_modules ./node_modules
16
  COPY . .
17
- # 构建前端和后端
 
18
  RUN pnpm run build
19
- # 只保留生产依赖以减小镜像体积
 
20
  RUN pnpm prune --prod
 
21
 
22
  # --- 运行阶段 ---
23
- FROM base AS runner
 
24
  ENV NODE_ENV=production
25
  ENV PORT=7860
26
 
 
 
 
 
 
27
  # 创建数据目录并设置权限 (适配 Hugging Face Spaces)
28
  RUN mkdir -p /app/data /app/uploads && chmod -R 777 /app/data /app/uploads
29
 
 
1
  # --- 基础镜像 ---
2
+ FROM node:20 AS builder
3
  ENV PNPM_HOME="/pnpm"
4
  ENV PATH="$PNPM_HOME:$PATH"
5
  RUN corepack enable
6
  WORKDIR /app
7
 
8
+ # 安装构建原生模块所需的工具
9
+ RUN apt-get update && apt-get install -y \
10
+ python3 \
11
+ make \
12
+ g++ \
13
+ libsqlite3-dev \
14
+ && rm -rf /var/lib/apt/lists/*
15
+
16
+ # 复制依赖定义文件
17
  COPY package.json pnpm-lock.yaml ./
18
+
19
+ # 安装依赖
20
  RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
21
 
22
+ # 复制源代码
 
 
23
  COPY . .
24
+
25
+ # 构建项目
26
  RUN pnpm run build
27
+
28
+ # 清理开发依赖并重新安装生产依赖以确保原生模块正确
29
  RUN pnpm prune --prod
30
+ RUN pnpm rebuild better-sqlite3
31
 
32
  # --- 运行阶段 ---
33
+ FROM node:20-slim AS runner
34
+ WORKDIR /app
35
  ENV NODE_ENV=production
36
  ENV PORT=7860
37
 
38
+ # 安装运行时可能需要的库
39
+ RUN apt-get update && apt-get install -y \
40
+ openssl \
41
+ && rm -rf /var/lib/apt/lists/*
42
+
43
  # 创建数据目录并设置权限 (适配 Hugging Face Spaces)
44
  RUN mkdir -p /app/data /app/uploads && chmod -R 777 /app/data /app/uploads
45