# syntax=docker/dockerfile:1 FROM node:20-alpine AS deps WORKDIR /workspace COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ COPY tsconfig.json tsconfig.base.json tsconfig.seed.json nest-cli.json ./ RUN corepack enable && corepack pnpm install --frozen-lockfile FROM node:20-alpine AS builder WORKDIR /workspace COPY --from=deps /workspace/node_modules ./node_modules COPY --from=deps /workspace/package.json ./package.json COPY --from=deps /workspace/pnpm-lock.yaml ./pnpm-lock.yaml COPY --from=deps /workspace/pnpm-workspace.yaml ./pnpm-workspace.yaml COPY --from=deps /workspace/tsconfig.json ./tsconfig.json COPY --from=deps /workspace/tsconfig.base.json ./tsconfig.base.json COPY --from=deps /workspace/tsconfig.seed.json ./tsconfig.seed.json COPY --from=deps /workspace/nest-cli.json ./nest-cli.json COPY apps ./apps COPY libs ./libs COPY prisma ./prisma COPY .env.docker .env.docker RUN set -a \ && . .env.docker \ && corepack enable \ && corepack pnpm prisma generate --schema=prisma/mysql/schema/main.prisma \ && corepack pnpm prisma generate --schema=prisma/mongo/schema/main.prisma \ && corepack pnpm prisma generate --schema=prisma/mongo-stats/schema/main.prisma \ && set +a \ && corepack pnpm build:mgnt FROM node:20-alpine AS runner WORKDIR /workspace COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ RUN corepack enable && corepack pnpm install --frozen-lockfile --prod COPY --from=builder /workspace/dist ./dist COPY --from=builder /workspace/node_modules/@prisma ./node_modules/@prisma ENV NODE_ENV=production EXPOSE 3300 CMD ["node", "dist/apps/box-mgnt-api/src/main.js"]