| 123456789101112131415161718192021222324252627282930313233343536373839 |
- # 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"]
|