# ============================================ # PandaWiki 管理后台 - 多阶段构建 # 构建上下文: ./web 目录 # ============================================ FROM node:22-alpine AS builder ENV PNPM_REGISTRY=https://registry.npmmirror.com WORKDIR /build # 安装 pnpm RUN corepack enable && corepack prepare pnpm@10 --activate # 复制 workspace 配置和锁文件 COPY pnpm-workspace.yaml pnpm-lock.yaml package.json ./ # 复制所有 workspace 包的 package.json COPY packages/icons/package.json packages/icons/ COPY packages/themes/package.json packages/themes/ COPY packages/ui/package.json packages/ui/ COPY admin/package.json admin/ COPY app/package.json app/ # 安装依赖 RUN pnpm install --frozen-lockfile # 复制源码 COPY packages/icons/ packages/icons/ COPY packages/themes/ packages/themes/ COPY packages/ui/ packages/ui/ COPY admin/ admin/ # 构建管理后台 RUN pnpm --filter panda-wiki-admin build # ============================================ # 运行时镜像 (Nginx) # ============================================ FROM nginx:alpine # 复制构建产物 COPY --from=builder /build/admin/dist /opt/frontend/dist # 复制 Nginx 配置 COPY admin/server.conf /etc/nginx/conf.d/server.conf COPY admin/nginx.conf /etc/nginx/nginx.conf COPY admin/ssl /etc/nginx/ssl EXPOSE 8080 CMD ["nginx", "-g", "daemon off;"]