FROM node:22-alpine AS base WORKDIR /app RUN corepack enable pnpm FROM base AS deps COPY package.json pnpm-lock.yaml* ./ RUN pnpm install --frozen-lockfile --prod FROM base AS builder COPY package.json pnpm-lock.yaml* ./ RUN pnpm install --frozen-lockfile COPY tsconfig.json ./ COPY src/ ./src/ RUN pnpm build FROM base AS production WORKDIR /app COPY --from=deps /app/node_modules ./node_modules COPY --from=builder /app/dist ./dist # PWA static assets served from ./public (built separately) COPY apps/pwa/dist/ ./public/ 2>/dev/null || true CMD ["node", "dist/index.js"] FROM base AS dev WORKDIR /app COPY package.json pnpm-lock.yaml* ./ RUN pnpm install --frozen-lockfile COPY tsconfig.json ./ CMD ["pnpm", "dev"]