yyyang | 3bd72f0 | 2025-06-03 16:35:11 +0800 | [diff] [blame] | 1 | # 构建阶段 |
yyyang | dce2f7b | 2025-06-03 20:25:19 +0800 | [diff] [blame] | 2 | FROM node:18-alpine AS build |
yyyang | 3bd72f0 | 2025-06-03 16:35:11 +0800 | [diff] [blame] | 3 | |
| 4 | # 设置工作目录 |
| 5 | WORKDIR /app |
| 6 | |
| 7 | # 设置 npm 镜像源(使用淘宝镜像加速 npm 包下载) |
| 8 | RUN npm config set registry https://registry.npmmirror.com |
| 9 | |
| 10 | # 复制 package.json 和 package-lock.json |
| 11 | COPY package*.json ./ |
| 12 | |
| 13 | # 安装依赖 |
| 14 | RUN npm install |
| 15 | |
| 16 | # 复制源代码 |
| 17 | COPY . . |
| 18 | |
yyyang | 3bd72f0 | 2025-06-03 16:35:11 +0800 | [diff] [blame] | 19 | # 构建应用 |
| 20 | RUN npm run build |
| 21 | |
| 22 | # 验证构建产物 |
| 23 | RUN ls -la dist && \ |
| 24 | ls -la dist/assets |
| 25 | |
| 26 | # 生产阶段 |
yyyang | dce2f7b | 2025-06-03 20:25:19 +0800 | [diff] [blame] | 27 | FROM nginx:1.24.0 |
yyyang | 3bd72f0 | 2025-06-03 16:35:11 +0800 | [diff] [blame] | 28 | |
| 29 | # 设置时区 |
| 30 | ENV TZ=Asia/Shanghai |
yyyang | 3339646 | 2025-06-03 17:36:35 +0800 | [diff] [blame] | 31 | RUN 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/* |
yyyang | 3bd72f0 | 2025-06-03 16:35:11 +0800 | [diff] [blame] | 37 | |
| 38 | # 清理 nginx 目录 |
| 39 | RUN rm -rf /usr/share/nginx/html/* |
| 40 | |
yyyang | dce2f7b | 2025-06-03 20:25:19 +0800 | [diff] [blame] | 41 | # 从构建阶段复制构建好的文件 |
| 42 | COPY --from=build /app/dist/ /usr/share/nginx/html/ |
yyyang | 3bd72f0 | 2025-06-03 16:35:11 +0800 | [diff] [blame] | 43 | |
| 44 | # 验证文件是否正确复制 |
| 45 | RUN ls -la /usr/share/nginx/html && \ |
| 46 | ls -la /usr/share/nginx/html/assets |
| 47 | |
| 48 | # 复制 Nginx 配置文件 |
| 49 | COPY nginx.conf /etc/nginx/conf.d/default.conf |
| 50 | |
| 51 | # 暴露端口 |
| 52 | EXPOSE 80 |
| 53 | |
| 54 | # 启动 Nginx |
| 55 | CMD ["nginx", "-g", "daemon off;"] |