| # 构建阶段 |
| FROM node:18-alpine AS build |
| |
| # 设置工作目录 |
| WORKDIR /app |
| |
| # 设置 npm 镜像源(使用淘宝镜像加速 npm 包下载) |
| RUN npm config set registry https://registry.npmmirror.com |
| |
| # 复制 package.json 和 package-lock.json |
| COPY package*.json ./ |
| |
| # 安装依赖 |
| RUN npm install |
| |
| # 复制源代码 |
| COPY . . |
| |
| # 构建应用 |
| RUN npm run build |
| |
| # 验证构建产物 |
| RUN ls -la dist && \ |
| ls -la dist/assets |
| |
| # 生产阶段 |
| FROM nginx:1.24.0 |
| |
| # 设置时区 |
| ENV TZ=Asia/Shanghai |
| RUN apt-get update && \ |
| apt-get install -y tzdata && \ |
| ln -fs /usr/share/zoneinfo/$TZ /etc/localtime && \ |
| echo $TZ > /etc/timezone && \ |
| apt-get clean && \ |
| rm -rf /var/lib/apt/lists/* |
| |
| # 清理 nginx 目录 |
| RUN rm -rf /usr/share/nginx/html/* |
| |
| # 从构建阶段复制构建好的文件 |
| COPY --from=build /app/dist/ /usr/share/nginx/html/ |
| |
| # 验证文件是否正确复制 |
| RUN ls -la /usr/share/nginx/html && \ |
| ls -la /usr/share/nginx/html/assets |
| |
| # 复制 Nginx 配置文件 |
| COPY nginx.conf /etc/nginx/conf.d/default.conf |
| |
| # 暴露端口 |
| EXPOSE 80 |
| |
| # 启动 Nginx |
| CMD ["nginx", "-g", "daemon off;"] |