# 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