FROM node:20-bullseye AS base

ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"

RUN npm i -g corepack@latest && corepack enable && corepack prepare pnpm@latest --activate
RUN pnpm add -g turbo
# RUN apk update && apk add --no-cache libc6-compat

FROM base AS pruner

WORKDIR /app

COPY . .

RUN turbo prune --scope=@karma/core --docker

FROM base AS builder

WORKDIR /app

COPY --from=pruner /app/out/pnpm-lock.yaml ./pnpm-lock.yaml
COPY --from=pruner /app/out/pnpm-workspace.yaml ./pnpm-workspace.yaml
COPY --from=pruner /app/out/json/ .

RUN --mount=type=cache,id=pnpm,target=~/.pnpm-store pnpm install --frozen-lockfile

COPY --from=pruner /app/out/full/ .

RUN pnpm build

FROM base AS runner

WORKDIR /app

RUN addgroup --system --gid 1001 karma-docker-group
RUN adduser --system --uid 1001 karam_dev

USER karam_dev

COPY --from=builder --chown=karam_dev:karma-docker-group /app .

RUN ls -la /app/apps/core

WORKDIR /app/apps/core

EXPOSE 8787

CMD ["node", "dist/index.js"]
