# 多阶段构建：builder 编译 TS -> runner 仅运行 dist
FROM node:22-alpine AS builder
WORKDIR /app

# 先装依赖（利用 Docker 层缓存）
COPY package*.json ./
COPY prisma ./prisma
RUN npm ci

COPY tsconfig*.json nest-cli.json ./
COPY src ./src
RUN npx prisma generate && npm run build

# ──────────────────────────────────────────────
FROM node:22-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production

COPY package*.json ./
COPY prisma ./prisma
RUN npm ci --omit=dev && npx prisma generate

COPY --from=builder /app/dist ./dist

EXPOSE 3090
# 启动前执行 migrate deploy（生产用），随后启动服务
CMD ["sh", "-c", "npx prisma migrate deploy && node dist/main.js"]
