# 第一阶段：基础准备
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

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

# 添加构建日志 - 显示上下文文件
RUN echo "### 构建上下文文件列表 ###" && \
    ls -la

# 复制 HBuilderX
COPY ./HBuilderX /opt/HBuilderX

# 详细验证
RUN echo "### 验证 HBuilderX 安装 ###" && \
    echo "### /opt/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 不存在！###" && \
        echo "### 尝试手动下载... ###" && \
        mkdir -p /opt/HBuilderX && \
        curl -o hbuilderx.tar.gz https://download.dcloud.net.cn/HBuilderX.4.75.2025071105.linux_x64.full.tar.gz && \
        tar -xzvf hbuilderx.tar.gz -C /opt/HBuilderX --strip-components=1 && \
        rm hbuilderx.tar.gz && \
        chmod +x /opt/HBuilderX/cli && \
        echo "### 下载后版本: " && /opt/HBuilderX/cli --version; \
    fi

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

# 复制项目文件
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;"]
