# Build stage
FROM node:22-alpine AS builder
WORKDIR /app
RUN corepack enable && corepack prepare pnpm@11.13.0 --activate
COPY package.json pnpm-lock.yaml* ./
# pnpm 11 默认拒绝 build scripts，独立安装时无法读取 workspace 的 allowBuilds 配置
# 使用 --ignore-scripts 跳过（@nestjs/core/protobufjs 的 postinstall 非功能必需）
# --no-frozen-lockfile：services/classes/ 无独立 pnpm-lock.yaml
RUN pnpm install --no-frozen-lockfile --ignore-scripts
COPY tsconfig.json nest-cli.json ./
COPY src ./src
RUN pnpm build

# Runtime stage
FROM node:22-alpine
WORKDIR /app
RUN corepack enable && corepack prepare pnpm@11.13.0 --activate
COPY package.json pnpm-lock.yaml* ./
RUN pnpm install --prod --no-frozen-lockfile --ignore-scripts
COPY --from=builder /app/dist ./dist
EXPOSE 3001
CMD ["node", "dist/main.js"]
