blob: c806d88ce6c28add9286bbe735b974c961700660 [file] [log] [blame]
yyyang3bd72f02025-06-03 16:35:11 +08001# 构建阶段
yyyangdce2f7b2025-06-03 20:25:19 +08002FROM node:18-alpine AS build
yyyang3bd72f02025-06-03 16:35:11 +08003
4# 设置工作目录
5WORKDIR /app
6
7# 设置 npm 镜像源(使用淘宝镜像加速 npm 包下载)
8RUN npm config set registry https://registry.npmmirror.com
9
10# 复制 package.json 和 package-lock.json
11COPY package*.json ./
12
13# 安装依赖
14RUN npm install
15
16# 复制源代码
17COPY . .
18
yyyang3bd72f02025-06-03 16:35:11 +080019# 构建应用
20RUN npm run build
21
22# 验证构建产物
23RUN ls -la dist && \
24 ls -la dist/assets
25
26# 生产阶段
yyyangdce2f7b2025-06-03 20:25:19 +080027FROM nginx:1.24.0
yyyang3bd72f02025-06-03 16:35:11 +080028
29# 设置时区
30ENV TZ=Asia/Shanghai
yyyang33396462025-06-03 17:36:35 +080031RUN apt-get update && \
32 apt-get install -y tzdata && \
33 ln -fs /usr/share/zoneinfo/$TZ /etc/localtime && \
34 echo $TZ > /etc/timezone && \
35 apt-get clean && \
36 rm -rf /var/lib/apt/lists/*
yyyang3bd72f02025-06-03 16:35:11 +080037
38# 清理 nginx 目录
39RUN rm -rf /usr/share/nginx/html/*
40
yyyangdce2f7b2025-06-03 20:25:19 +080041# 从构建阶段复制构建好的文件
42COPY --from=build /app/dist/ /usr/share/nginx/html/
yyyang3bd72f02025-06-03 16:35:11 +080043
44# 验证文件是否正确复制
45RUN ls -la /usr/share/nginx/html && \
46 ls -la /usr/share/nginx/html/assets
47
48# 复制 Nginx 配置文件
49COPY nginx.conf /etc/nginx/conf.d/default.conf
50
51# 暴露端口
52EXPOSE 80
53
54# 启动 Nginx
55CMD ["nginx", "-g", "daemon off;"]