chriswu25 commited on
Commit
4d4656a
·
1 Parent(s): 2bc6d22
Files changed (1) hide show
  1. Dockerfile +10 -22
Dockerfile CHANGED
@@ -1,45 +1,33 @@
1
  # 步骤 1: 选择一个包含 Node.js 的基础镜像
2
- # 我们选用一个 LTS (长期支持) 版本,alpine 版本体积更小
3
  FROM node:18-alpine AS builder
4
 
5
  # 步骤 2: 设置工作目录
6
  WORKDIR /app
7
 
8
- # 步骤 3: 复制 package.json 和 package-lock.json (或 yarn.lock)
9
- # 这样做可以利用 Docker 的缓存机制,如果这些文件没变,就不用重新安装依赖
10
  COPY package*.json ./
11
 
12
- # 步骤 4: 安装生产依赖
13
- # 使用 npm ci 通常比 npm install 更快、更可靠,特别是在 CI/CD 环境中
14
- RUN npm ci --omit=dev
15
 
16
  # 步骤 5: 复制项目的所有代码到工作目录
17
  COPY . .
18
 
19
- # 步骤 6: 构建项目
20
- # 运行你在本地执行的 build 命令
21
  RUN npm run build
22
 
23
- # -------- 这部分是优化,只保留运行需要的部分 --------
24
- # 如果你的项目构建后只需要 Node 来运行一个服务(比如 vite preview),
25
- # 可以继续使用 node 镜像。如果只是纯静态文件,可以用 nginx 或 http-server 等。
26
- # squish 项目的 `npm run build` 生成静态文件,但 `npm run preview` 启动了一个服务来预览,所以我们还是需要 Node。
27
 
28
- # 步骤 7: (可选优化 - 如果 devDependencies 在运行时不需要)
29
- # 如果运行时不需要开发依赖,可以重新安装纯生产依赖
30
- # RUN rm -rf node_modules && npm ci --omit=dev --ignore-scripts
31
 
32
  # 步骤 8: 暴露端口
33
- # 查看 package.json,`npm run preview` 实际上是运行 `vite preview`。
34
- # Vite preview 默认端口通常是 4173 或 5173。查阅 Vite 文档或尝试运行 `npm run preview -- --port 7860` 看看。
35
- # Hugging Face Spaces 默认喜欢 7860 端口,但它通常也能自动映射。
36
- # 我们先暴露 vite preview 的默认端口 4173,然后在 Hugging Face 配置里指定它。
37
- # 如果你想强制用 7860,可以修改下面的 CMD 命令。
38
  EXPOSE 4173
39
 
40
  # 步骤 9: 定义容器启动时运行的命令
41
- # 使用 `npm run preview -- --host` 让服务监听所有网络接口(Docker 容器内必须)
42
- # `--host` 参数是传递给 `vite preview` 的
43
  CMD ["npm", "run", "preview", "--", "--host"]
44
 
45
  # --- 如果你想强制用 7860 端口 ---
 
1
  # 步骤 1: 选择一个包含 Node.js 的基础镜像
 
2
  FROM node:18-alpine AS builder
3
 
4
  # 步骤 2: 设置工作目录
5
  WORKDIR /app
6
 
7
+ # 步骤 3: 复制 package.json 和 package-lock.json
 
8
  COPY package*.json ./
9
 
10
+ # 步骤 4: 安装 *所有* 依赖 (包括 devDependencies,这样 vite 才会被安装)
11
+ # 注意:去掉了 --omit=dev
12
+ RUN npm ci
13
 
14
  # 步骤 5: 复制项目的所有代码到工作目录
15
  COPY . .
16
 
17
+ # 步骤 6: 构建项目 (现在 vite 应该能找到了)
 
18
  RUN npm run build
19
 
20
+ # 步骤 7: (优化) 移除开发依赖,减小最终镜像体积
21
+ # prune 命令会根据 package.json 移除 devDependencies
22
+ RUN npm prune --omit=dev
 
23
 
24
+ # -------- 运行阶段 --------
25
+ # (如果你不需要多阶段构建,下面的内容保持不变)
 
26
 
27
  # 步骤 8: 暴露端口
 
 
 
 
 
28
  EXPOSE 4173
29
 
30
  # 步骤 9: 定义容器启动时运行的命令
 
 
31
  CMD ["npm", "run", "preview", "--", "--host"]
32
 
33
  # --- 如果你想强制用 7860 端口 ---