FROM node:20-bullseye AS base

ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN mkdir -p /pnpm && chmod -R 777 /pnpm
RUN npm i -g corepack@latest && corepack enable && corepack prepare pnpm@latest --activate

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

FROM base AS builder

WORKDIR /app

RUN pnpm add -g turbo

COPY . .
RUN turbo prune @karma/admin-console --docker

FROM base AS installer

WORKDIR /app

COPY .gitignore .gitignore
COPY --from=builder /app/out/json/ .
COPY --from=builder /app/out/pnpm-lock.yaml ./pnpm-lock.yaml

RUN mkdir -p node_modules && chown -R karam_dev:karma-docker-group node_modules
RUN pnpm install

COPY --from=builder /app/out/full/ .
COPY turbo.json turbo.json

ARG VITE_CORE_API

ENV VITE_CORE_API=$VITE_CORE_API
ENV NODE_ENV=production

RUN VITE_CORE_API=${VITE_CORE_API} \
    NODE_ENV=production \
    pnpm build:admin-console

FROM base AS runner

WORKDIR /app

USER karam_dev

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

EXPOSE 3000

CMD  ["pnpm", "start:admin-console"]
