# 多阶段构建 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）
# 注意：NODE_ENV=production 会跳过 devDependencies，所以用 --include=dev
RUN npm install --silent --ignore-scripts --include=dev

# 复制源代码
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地址）
# 增加 Node.js 内存限制避免 OOM
RUN NODE_OPTIONS="--max-old-space-size=4096" 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"]
