# syntax=docker/dockerfile:1.7

# 第一阶段：构建主站前端静态资源
FROM node:24-alpine AS build

ARG VITE_ADMIN_BASE_PATH=/manage-7x9k2p
ENV VITE_ADMIN_BASE_PATH=${VITE_ADMIN_BASE_PATH}
# 主站后台里「打开独立分销后台」按钮与开通凭证使用的分销后台地址。
# 留空时前端按 distribution.<当前主站域名> 推导，显式配置可覆盖（如独立后台子域改名）。
ARG VITE_DISTRIBUTION_ADMIN_URL=
ENV VITE_DISTRIBUTION_ADMIN_URL=${VITE_DISTRIBUTION_ADMIN_URL}

WORKDIR /src
COPY frontend/package*.json ./
RUN --mount=type=cache,target=/root/.npm \
    npm ci --prefer-offline --no-audit --fund=false
COPY frontend/ .
RUN npm run build

# 第二套独立分销管理后台（React + Ant Design）
FROM node:24-alpine AS distribution-build
WORKDIR /src
COPY distribution-admin/package*.json ./
RUN --mount=type=cache,target=/root/.npm \
    npm ci --prefer-offline --no-audit --fund=false
COPY distribution-admin/ .
RUN npm run build

# 第三阶段：Caddy 作为公网入口，托管主站、分销后台和选号网静态资源
FROM caddy:2.10-alpine

COPY --from=build /src/dist /srv/dist
# show-dist 由 deploy-prod.sh 在 build 前准备（hfb_show 构建产物或占位页）
COPY deploy/caddy/show-dist /srv/show-dist
COPY --from=distribution-build /src/dist /srv/distribution-admin

EXPOSE 80 443
