# syntax=docker/dockerfile:1.7

# 构建 Vue 静态文件
FROM node:22-alpine AS build

WORKDIR /app

# Corepack 随 Node 一起提供，用它固定使用项目的 pnpm。
ENV PNPM_HOME=/pnpm
ENV PATH=$PNPM_HOME:$PATH
RUN corepack enable

COPY package.json pnpm-lock.yaml ./
COPY shared/package.json ./shared/package.json
# pnpm store 使用 BuildKit 持久缓存；依赖未变化时不会重新下载。
RUN --mount=type=cache,id=admin-web-pnpm-store,target=/pnpm/store \
    pnpm config set store-dir /pnpm/store && \
    pnpm install --frozen-lockfile

COPY . .
RUN pnpm test && pnpm build

# 运行阶段：仅保留构建产物和 Nginx，不包含源码或 node_modules。
FROM nginx:1.27-alpine

COPY nginx/default.conf.template /etc/nginx/templates/default.conf.template
COPY --from=build /app/dist /usr/share/nginx/html

EXPOSE 80
