# ── Stage 1: builder ──────────────────────────────────────────────────────────
FROM node:20-alpine AS builder

WORKDIR /usr/src/app

COPY package.json package-lock.json ./
RUN npm ci --no-audit --no-fund

COPY . ./

ARG VITE_PORT=3000
ARG VITE_APP_ENV=production
ARG VITE_API_URL=https://agos.armco.dev
ARG VITE_IAM_ISSUER=https://iam.armco.dev
ARG VITE_IAM_CLIENT_ID=client_2dbeb454ddf14203b092eb4636a8e3d7
ARG VITE_IAM_AUDIENCE=stuffle-api
ARG VITE_IAM_RESOURCE=
ARG VITE_IAM_DESKTOP_CLIENT_ID=client_6a243d0c127843ff8f2f2a28a486638f
ARG VITE_IAM_DESKTOP_REDIRECT_URI=app://bundle/callback
ARG VITE_GOOGLE_CLIENT_ID=
ENV VITE_PORT=$VITE_PORT \
    VITE_APP_ENV=$VITE_APP_ENV \
    VITE_API_URL=$VITE_API_URL \
    VITE_IAM_ISSUER=$VITE_IAM_ISSUER \
    VITE_IAM_CLIENT_ID=$VITE_IAM_CLIENT_ID \
    VITE_IAM_AUDIENCE=$VITE_IAM_AUDIENCE \
    VITE_IAM_RESOURCE=$VITE_IAM_RESOURCE \
    VITE_IAM_DESKTOP_CLIENT_ID=$VITE_IAM_DESKTOP_CLIENT_ID \
    VITE_IAM_DESKTOP_REDIRECT_URI=$VITE_IAM_DESKTOP_REDIRECT_URI \
    VITE_GOOGLE_CLIENT_ID=$VITE_GOOGLE_CLIENT_ID

RUN npm run build

# ── Stage 2: production runtime ───────────────────────────────────────────────
FROM node:20-alpine

WORKDIR /usr/src/app

COPY package.json package-lock.json ./
RUN npm ci --no-audit --no-fund

COPY --from=builder /usr/src/app/dist ./dist
COPY vite.config.preview.js ./

EXPOSE 3000

CMD ["node_modules/.bin/vite", "preview", "--config", "vite.config.preview.js", "--port", "3000", "--host", "0.0.0.0"]
