# 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"]
