File size: 1,357 Bytes
2bc6d22
 
 
 
 
 
4d4656a
4def16e
2bc6d22
 
4def16e
4d4656a
2bc6d22
 
 
 
4def16e
2bc6d22
 
4d4656a
4def16e
4d4656a
2bc6d22
4d4656a
2bc6d22
 
4def16e
2bc6d22
 
 
4def16e
 
 
 
 
2bc6d22
4def16e
2bc6d22
4def16e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 步骤 1: 选择一个包含 Node.js 的基础镜像
FROM node:18-alpine AS builder

# 步骤 2: 设置工作目录
WORKDIR /app

# 步骤 3: 复制 package.json 和 package-lock.json
# 确保这里复制的 package.json 包含了 "serve" 作为生产依赖
COPY package*.json ./

# 步骤 4: 安装 *所有* 依赖 (包括 devDependencies 用于构建)
RUN npm ci

# 步骤 5: 复制项目的所有代码到工作目录
COPY . .

# 步骤 6: 构建项目 (生成静态文件到 dist 目录)
RUN npm run build

# 步骤 7: (优化) 移除开发依赖,减小最终镜像体积
# 因为 'serve' 是生产依赖,所以不会被 prune 命令移除
RUN npm prune --omit=dev

# -------- 运行阶段 --------

# 步骤 8: 暴露端口
# 我们将让 'serve' 监听 4173 端口
EXPOSE 4173

# 步骤 9: 定义容器启动时运行的命令
# 改用 'npx serve' 来托管 'dist' 目录下的静态文件
# -s: 表示单页应用 (SPA) 模式,处理路由回退
# dist: squish 项目构建后输出的目录名 (vite 默认是 dist)
# -l 4173: 指定监听端口,必须和 EXPOSE 及 README.md 中的 app_port 一致
CMD ["npx", "serve", "-s", "dist", "-l", "4173"]

# --- 关于 7860 端口的注释保持不变,如果你需要改端口,记得同步修改 EXPOSE, CMD, 和 README.md ---
# EXPOSE 7860
# CMD ["npx", "serve", "-s", "dist", "-l", "7860"]