update
Browse files- 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
|
9 |
-
# 这样做可以利用 Docker 的缓存机制,如果这些文件没变,就不用重新安装依赖
|
10 |
COPY package*.json ./
|
11 |
|
12 |
-
# 步骤 4:
|
13 |
-
#
|
14 |
-
RUN npm ci
|
15 |
|
16 |
# 步骤 5: 复制项目的所有代码到工作目录
|
17 |
COPY . .
|
18 |
|
19 |
-
# 步骤 6: 构建项目
|
20 |
-
# 运行你在本地执行的 build 命令
|
21 |
RUN npm run build
|
22 |
|
23 |
-
#
|
24 |
-
#
|
25 |
-
|
26 |
-
# squish 项目的 `npm run build` 生成静态文件,但 `npm run preview` 启动了一个服务来预览,所以我们还是需要 Node。
|
27 |
|
28 |
-
#
|
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 端口 ---
|