# ============================================
# 前端 Docker 镜像 — 多阶段构建
# Stage 1: Node + pnpm 编译
# Stage 2: Nginx 托管静态文件
# ============================================

# ---- Stage 1: 编译 ----
FROM node:22-alpine AS builder

# 限制 Node 内存，防止低配服务器 OOM
ENV NODE_OPTIONS="--max-old-space-size=512"

RUN corepack enable && corepack prepare pnpm@9 --activate

WORKDIR /build

# 先复制依赖声明，利用缓存
COPY package.json pnpm-lock.yaml .npmrc ./

RUN pnpm install --frozen-lockfile

# 复制源码
COPY . .

# 构建（Vite 会把 .env.production 里的变量编译进去）
RUN pnpm build

# ---- Stage 2: Nginx ----
FROM nginx:alpine

LABEL maintainer="ghb-base deploy"

# 删除默认配置
RUN rm /etc/nginx/conf.d/default.conf

# 复制自定义 nginx 配置
COPY deploy/nginx/default.conf /etc/nginx/conf.d/default.conf

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

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]
