FROM node:20-alpine AS base RUN apk add --no-cache git WORKDIR /app FROM base AS deps COPY package.json package-lock.json* ./ COPY apps/web/package.json ./apps/web/ COPY packages/database/package.json ./packages/database/ RUN npm install --production=false FROM base AS builder COPY --from=deps /app/node_modules ./node_modules COPY . . RUN npx prisma generate --schema=packages/database/prisma/schema.prisma RUN npx turbo build FROM base AS web RUN addgroup --system --gid 1001 nodejs && \ adduser --system --uid 1001 nextjs COPY --from=builder --chown=nextjs:nodejs /app/apps/web/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/apps/web/.next/static ./apps/web/.next/static COPY --from=builder --chown=nextjs:nodejs /app/packages/database/prisma ./packages/database/prisma USER nextjs EXPOSE 3000 ENV PORT=3000 HOSTNAME="0.0.0.0" CMD ["node", "apps/web/server.js"]