FROM node:lts-bookworm-slim AS build

ENV PNPM_HOME=/usr/local/bin

WORKDIR /opt/michess/

COPY . .

ARG NEXT_PUBLIC_API_URL=http://localhost:3001
ARG NEXT_PUBLIC_APP_URL=http://localhost:3000
ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL
ENV NEXT_PUBLIC_APP_URL=$NEXT_PUBLIC_APP_URL

RUN corepack enable && \
    corepack prepare pnpm@9.15.9 --activate && \
    pnpm config set store-dir /opt/michess/.pnpm-store && \
    pnpm install --no-frozen-lockfile && \
    pnpm build:server && \
    pnpm build:client && \
    rm -rf node_modules client/node_modules server/node_modules types/node_modules && \
    pnpm install --prod --no-frozen-lockfile && \
    pnpm store prune && \
    rm -rf \
        /opt/michess/.pnpm-store \
        /root/.cache \
        /tmp/* \
        client/.next/cache \
        client/src \
        server/src \
        .git \
        .github \
        .gitea

FROM node:lts-bookworm-slim

RUN apt-get update && \
    apt-get install -y --no-install-recommends stockfish && \
    rm -rf /var/lib/apt/lists/*

ENV NODE_ENV=production
ENV PNPM_HOME=/usr/local/bin

WORKDIR /opt/michess/

COPY --from=build /opt/michess/ ./

RUN corepack enable && corepack prepare pnpm@9.15.9 --activate

EXPOSE 3000 3001

CMD ["node", "scripts/start-production.mjs"]
