FROM node:22.20-bookworm-slim AS build

RUN apt-get update && apt-get install -y --no-install-recommends \
    python3 make g++ libcairo2-dev libpango1.0-dev libjpeg-dev \
    libgif-dev librsvg2-dev libssl-dev pkg-config \
    && rm -rf /var/lib/apt/lists/* \
    && npm install --global --no-fund --no-audit pnpm@10.6.1
WORKDIR /app
COPY . .
RUN pnpm install --frozen-lockfile

# Next embeds these public values in its production output. No private secret is
# accepted as a build argument; Compose supplies private values at runtime.
ARG NEXT_PUBLIC_BACKEND_URL
ARG MAIN_URL
ARG FRONTEND_URL
ARG NEXT_PUBLIC_TERMS_URL
ARG NEXT_PUBLIC_PRIVACY_URL
ARG NEXT_PUBLIC_SOURCE_URL
ARG NEXT_PUBLIC_PRODUCT_NAME
ARG NEXT_PUBLIC_AI_ENABLED
ARG NEXT_PUBLIC_UPLOAD_STATIC_DIRECTORY=uploads
ENV NEXT_PUBLIC_BACKEND_URL=$NEXT_PUBLIC_BACKEND_URL \
    MAIN_URL=$MAIN_URL \
    FRONTEND_URL=$FRONTEND_URL \
    STORAGE_PROVIDER=local \
    UPLOAD_DIRECTORY=/uploads \
    IS_GENERAL=true \
    NEXT_PUBLIC_TERMS_URL=$NEXT_PUBLIC_TERMS_URL \
    NEXT_PUBLIC_PRIVACY_URL=$NEXT_PUBLIC_PRIVACY_URL \
    NEXT_PUBLIC_SOURCE_URL=$NEXT_PUBLIC_SOURCE_URL \
    NEXT_PUBLIC_PRODUCT_NAME=$NEXT_PUBLIC_PRODUCT_NAME \
    NEXT_PUBLIC_AI_ENABLED=$NEXT_PUBLIC_AI_ENABLED
ENV NEXT_PUBLIC_UPLOAD_STATIC_DIRECTORY=$NEXT_PUBLIC_UPLOAD_STATIC_DIRECTORY
RUN NODE_OPTIONS=--max-old-space-size=4096 pnpm run build

FROM node:22.20-bookworm-slim AS runtime
RUN apt-get update && apt-get install -y --no-install-recommends \
    ca-certificates openssl libcairo2 libpango-1.0-0 libpangocairo-1.0-0 \
    libjpeg62-turbo libgif7 librsvg2-2 fontconfig \
    && rm -rf /var/lib/apt/lists/*
ENV NODE_ENV=production
WORKDIR /app
# The Nest output and Next server still resolve packages and workspace sources
# from this hoisted pnpm workspace. Keep the built tree together until a
# measured standalone/pruned build exists for this fork.
COPY --from=build /app /app
EXPOSE 3000 3002 4200
