FROM node:22-alpine AS base
RUN apk update
RUN apk add --no-cache libc6-compat
RUN npm i -g pnpm

FROM base AS builder
WORKDIR /app
RUN npm i -g turbo@^2
COPY . .
RUN turbo telemetry disable
RUN turbo prune backend --docker

FROM base AS installer
WORKDIR /app
COPY --from=builder /app/out/json/ .
RUN pnpm i --prod --ignore-scripts
COPY --from=builder /app/out/full/ .
RUN pnpm config:init -- --skip-database
RUN pnpm turbo build --filter=backend...

FROM base AS runner
WORKDIR /app
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nestjs
USER nestjs

COPY --from=installer --chown=nestjs:nodejs /app/ ./

EXPOSE 8080
ENV PORT 8080
ENV HOSTNAME "0.0.0.0"