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 端口 ---
|