# Build stage FROM node:22-alpine AS builder WORKDIR /app RUN corepack enable && corepack prepare pnpm@11.13.0 --activate # 复制 workspace 根配置 COPY pnpm-workspace.yaml package.json pnpm-lock.yaml tsconfig.base.json ./ # 复制 shared-proto(proto 文件运行时需要) COPY packages/shared-proto/package.json packages/shared-proto/ COPY packages/shared-proto/proto packages/shared-proto/proto # 复制 content 服务 COPY services/content/package.json services/content/tsconfig.json services/content/nest-cli.json ./services/content/ COPY services/content/src ./services/content/src # 安装依赖(不执行 scripts) RUN pnpm install --frozen-lockfile --ignore-scripts # 构建 RUN cd services/content && pnpm build # Runtime stage FROM node:22-alpine WORKDIR /app RUN corepack enable && corepack prepare pnpm@11.13.0 --activate # 复制 workspace 配置 COPY pnpm-workspace.yaml package.json pnpm-lock.yaml tsconfig.base.json ./ # 复制 shared-proto(运行时加载 proto 文件) COPY packages/shared-proto/package.json packages/shared-proto/ COPY packages/shared-proto/proto packages/shared-proto/proto # 复制 content 服务 package.json COPY services/content/package.json ./services/content/ # 安装生产依赖 RUN pnpm install --prod --frozen-lockfile --ignore-scripts # 复制构建产物 COPY --from=builder /app/services/content/dist ./services/content/dist EXPOSE 3005 50054 WORKDIR /app/services/content CMD ["node", "dist/main.js"]