# syntax=docker/dockerfile:1 # ===== STAGE 1: Base ===== FROM node:22-alpine AS base RUN corepack enable && corepack prepare pnpm@latest --activate WORKDIR /app # ===== STAGE 2: Dependencies ===== FROM base AS deps COPY package.json pnpm-lock.yaml ./ # Cache do pnpm store para builds mais rápidas RUN --mount=type=cache,id=pnpm,target=/pnpm/store \ pnpm install --frozen-lockfile # ===== STAGE 3: Build ===== FROM deps AS build COPY . . RUN pnpm prisma:generate && pnpm build # ===== STAGE 4: Production ===== # ===== STAGE 4: Production (Distroless) ===== FROM gcr.io/distroless/nodejs22-debian12:nonroot WORKDIR /app # Copia apenas o necessário para produção COPY --from=build --chown=nonroot:nonroot /app/dist ./dist COPY --from=build --chown=nonroot:nonroot /app/prisma ./prisma COPY --from=build --chown=nonroot:nonroot /app/node_modules/.prisma ./node_modules/.prisma COPY --from=build --chown=nonroot:nonroot /app/node_modules/@prisma ./node_modules/@prisma COPY --from=deps --chown=nonroot:nonroot /app/node_modules ./node_modules COPY --chown=nonroot:nonroot package.json ./ ENV NODE_ENV=production EXPOSE 3000 CMD ["dist/main.js"]