# --- builder --- FROM node:22-alpine AS builder WORKDIR /repo RUN corepack enable && corepack prepare pnpm@10.28.0 --activate COPY pnpm-workspace.yaml package.json pnpm-lock.yaml tsconfig.base.json ./ COPY apps/api/package.json ./apps/api/ COPY packages/db/package.json ./packages/db/ COPY packages/shared/package.json ./packages/shared/ RUN pnpm install --frozen-lockfile COPY apps/api ./apps/api COPY packages/db ./packages/db COPY packages/shared ./packages/shared RUN pnpm --filter api build # --- runtime --- FROM node:22-alpine AS runtime WORKDIR /app ENV NODE_ENV=production RUN corepack enable && corepack prepare pnpm@10.28.0 --activate COPY --from=builder /repo/pnpm-workspace.yaml /repo/package.json /repo/pnpm-lock.yaml ./ COPY --from=builder /repo/apps/api/package.json ./apps/api/ COPY --from=builder /repo/packages/db ./packages/db COPY --from=builder /repo/packages/shared ./packages/shared COPY --from=builder /repo/apps/api/dist ./apps/api/dist RUN pnpm install --frozen-lockfile --prod EXPOSE 3000 WORKDIR /app/apps/api CMD ["node", "dist/server.js"]