FROM node:20-alpine AS base RUN corepack enable && corepack prepare pnpm@9.15.4 --activate WORKDIR /app FROM base AS deps COPY package.json pnpm-workspace.yaml ./ COPY apps/master-api/package.json ./apps/master-api/ COPY packages/shared-types/package.json ./packages/shared-types/ COPY packages/protocol/package.json ./packages/protocol/ RUN pnpm install --no-frozen-lockfile FROM base AS builder COPY --from=deps /app/node_modules ./node_modules COPY --from=deps /app/apps ./apps COPY --from=deps /app/packages ./packages COPY package.json pnpm-workspace.yaml ./ COPY packages ./packages COPY apps/master-api ./apps/master-api RUN pnpm --filter @media-cluster/shared-types build \ && pnpm --filter @media-cluster/protocol build WORKDIR /app/apps/master-api RUN pnpm exec prisma generate && pnpm build FROM node:20-alpine AS runner WORKDIR /app ENV NODE_ENV=production RUN apk add --no-cache openssl wget COPY --from=builder /app/apps/master-api/dist ./dist COPY --from=builder /app/apps/master-api/package.json ./package.json COPY --from=builder /app/apps/master-api/prisma ./prisma COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/packages ./packages EXPOSE 3000 CMD ["sh", "-c", "npx prisma migrate deploy && node dist/app.js"]