# 第一阶段：基础准备（不包含大文件）
FROM node:16.20.2-bullseye-slim AS base

# 设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 使用国内镜像源
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \
    sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list

# 安装基础依赖
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    curl \
    tar \
    ca-certificates \
    && rm -rf /var/lib/apt/lists/*

# 设置工作目录
WORKDIR /app

# ===================================================
# 第二阶段：安装 HBuilderX（单独阶段）
FROM base AS hbuilderx-installer

# 通过构建参数传递 HBuilderX 路径
ARG HBUILDERX_PATH

# 直接从宿主机复制 HBuilderX（避免通过构建上下文）
COPY --from=host ${HBUILDERX_PATH} /opt/HBuilderX

# 验证安装
RUN echo "### 验证 HBuilderX 安装 ###" && \
    ls -la /opt/HBuilderX && \
    if [ -f "/opt/HBuilderX/cli" ]; then \
        echo "HBuilderX CLI 存在" && \
        chmod +x /opt/HBuilderX/cli && \
        echo "版本信息: " && /opt/HBuilderX/cli --version; \
    else \
        echo "错误：HBuilderX CLI 不存在！" && \
        find /opt -name cli && \
        exit 1; \
    fi

# ===================================================
# 第三阶段：项目构建
FROM base AS builder

# 复制 HBuilderX 安装结果
COPY --from=hbuilderx-installer /opt/HBuilderX /opt/HBuilderX

# 设置环境变量
ENV PATH="/opt/HBuilderX:${PATH}"

# 复制项目文件（不包括 HBuilderX）
COPY . .

# 使用国内 npm 源安装依赖
RUN npm config set registry https://registry.npmmirror.com && \
    npm install

# 设置构建参数
ARG BUILD_PLATFORM=h5
ENV UNI_PLATFORM=$BUILD_PLATFORM

# 执行构建
RUN echo "### 开始项目构建 ###" && \
    cli build --project /app --platform $BUILD_PLATFORM

# ===================================================
# 第四阶段：运行环境
FROM nginx:1.25.2-alpine AS h5-runtime

# 复制自定义Nginx配置
COPY --from=builder /app/nginx.conf /etc/nginx/conf.d/default.conf

# 复制构建产物
COPY --from=builder /app/unpackage/dist/build/h5 /usr/share/nginx/html

# 暴露端口
EXPOSE 8333

# 启动命令
CMD ["nginx", "-g", "daemon off;"]
