FROM node:22-alpine AS base RUN npm install -g pnpm FROM base AS deps WORKDIR /app COPY package.json pnpm-workspace.yaml pnpm-lock.yaml* ./ COPY packages/shared-types/package.json ./packages/shared-types/ COPY services/api/package.json ./services/api/ RUN pnpm install --frozen-lockfile FROM base AS builder WORKDIR /app COPY --from=deps /app/node_modules ./node_modules COPY --from=deps /app/packages/shared-types/node_modules ./packages/shared-types/node_modules COPY --from=deps /app/services/api/node_modules ./services/api/node_modules COPY tsconfig.base.json ./ COPY packages/shared-types ./packages/shared-types COPY services/api ./services/api RUN pnpm --filter @oo/shared-types build RUN pnpm --filter @oo/api build FROM node:22-alpine AS runner WORKDIR /app RUN npm install -g pnpm COPY package.json pnpm-workspace.yaml pnpm-lock.yaml* ./ COPY packages/shared-types/package.json ./packages/shared-types/ COPY services/api/package.json ./services/api/ RUN pnpm install --prod --frozen-lockfile COPY --from=builder /app/packages/shared-types/dist ./packages/shared-types/dist COPY --from=builder /app/services/api/dist ./services/api/dist WORKDIR /app/services/api CMD ["node", "dist/index.js"]