Files
012-kaopeilian/frontend/Dockerfile
111 998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
2026-01-24 19:33:28 +08:00

98 lines
2.6 KiB
Docker
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 多阶段构建 Dockerfile - 支持多客户部署
# 每个客户构建时通过 ARG 传入不同的 VITE_API_BASE_URL
# ============================================
# 构建阶段 - 使用阿里云镜像
# ============================================
FROM node:18-alpine AS builder
# 设置工作目录
WORKDIR /app
# 接收构建参数(关键!每个客户构建时传入不同的值)
ARG NODE_ENV=production
ARG VITE_API_BASE_URL=https://aiedu.ireborn.com.cn
ARG VITE_WS_BASE_URL=wss://aiedu.ireborn.com.cn
ARG VITE_USE_MOCK_DATA=false
# 设置环境变量(构建时使用)
ENV NODE_ENV=$NODE_ENV
ENV VITE_API_BASE_URL=$VITE_API_BASE_URL
ENV VITE_WS_BASE_URL=$VITE_WS_BASE_URL
ENV VITE_USE_MOCK_DATA=$VITE_USE_MOCK_DATA
# 复制 package 文件
COPY package*.json ./
# 配置npm使用阿里云镜像
RUN npm config set registry https://registry.npmmirror.com
# 安装所有依赖包括开发依赖跳过husky
RUN npm install --silent --ignore-scripts
# 复制源代码
COPY . .
# 打印环境变量以便调试(构建日志中可见)
RUN echo "======================================" && \
echo "Build environment for this customer:" && \
echo "NODE_ENV=$NODE_ENV" && \
echo "VITE_API_BASE_URL=$VITE_API_BASE_URL" && \
echo "VITE_WS_BASE_URL=$VITE_WS_BASE_URL" && \
echo "VITE_USE_MOCK_DATA=$VITE_USE_MOCK_DATA" && \
echo "======================================"
# 构建应用使用环境变量中的API地址
RUN npm run build
# ============================================
# 生产阶段 - 轻量级nginx镜像
# ============================================
FROM nginx:alpine AS production
# 安装curl用于健康检查
RUN apk add --no-cache curl
# 复制自定义 nginx 配置
COPY docker/nginx.conf /etc/nginx/nginx.conf
COPY docker/default.conf /etc/nginx/conf.d/default.conf
# 从构建阶段复制构建产物
COPY --from=builder /app/dist /usr/share/nginx/html
# 暴露端口
EXPOSE 80
# 健康检查
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD curl -f http://localhost:80/ || exit 1
# 启动 nginx
CMD ["nginx", "-g", "daemon off;"]
# ============================================
# 开发阶段(可选)
# ============================================
FROM node:18-alpine AS development
# 设置工作目录
WORKDIR /app
# 复制 package 文件
COPY package*.json ./
# 配置npm使用阿里云镜像
RUN npm config set registry https://registry.npmmirror.com
# 安装所有依赖包括开发依赖跳过husky
RUN npm install --silent --ignore-scripts
# 复制源代码
COPY . .
# 暴露端口
EXPOSE 3001
# 启动开发服务器
CMD ["npm", "run", "dev"]