feat: 初始化考培练系统项目
- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
This commit is contained in:
97
frontend/Dockerfile
Normal file
97
frontend/Dockerfile
Normal file
@@ -0,0 +1,97 @@
|
||||
# 多阶段构建 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"]
|
||||
Reference in New Issue
Block a user