FROM node:22-alpine AS deps
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci

FROM node:22-alpine AS builder
WORKDIR /app
ARG NEXT_PUBLIC_API_URL=http://backend:8000
ARG NEXT_PUBLIC_DEFAULT_TIME_ZONE=Asia/Bangkok
ARG NEXT_PUBLIC_PRODUCT_FLAVOR=zimphony
ARG NEXT_PUBLIC_MAILMALI_BAP_READONLY_API_ENABLED=false
ARG NEXT_PUBLIC_MAILMALI_BAP_API_BASE_URL=
ARG INTERNAL_API_UPSTREAM=http://backend:8000
ARG INTERNAL_ADMIN_API_UPSTREAM=http://backend:8000
ARG NEXT_BASE_PATH=
ARG NEXT_ASSET_PREFIX=
ARG NEXT_PUBLIC_API_PREFIX=/api
ARG NEXT_DIST_DIR=.next
ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL
ENV NEXT_PUBLIC_DEFAULT_TIME_ZONE=$NEXT_PUBLIC_DEFAULT_TIME_ZONE
ENV NEXT_PUBLIC_PRODUCT_FLAVOR=$NEXT_PUBLIC_PRODUCT_FLAVOR
ENV NEXT_PUBLIC_MAILMALI_BAP_READONLY_API_ENABLED=$NEXT_PUBLIC_MAILMALI_BAP_READONLY_API_ENABLED
ENV NEXT_PUBLIC_MAILMALI_BAP_API_BASE_URL=$NEXT_PUBLIC_MAILMALI_BAP_API_BASE_URL
ENV INTERNAL_API_UPSTREAM=$INTERNAL_API_UPSTREAM
ENV INTERNAL_ADMIN_API_UPSTREAM=$INTERNAL_ADMIN_API_UPSTREAM
ENV NEXT_BASE_PATH=$NEXT_BASE_PATH
ENV NEXT_ASSET_PREFIX=$NEXT_ASSET_PREFIX
ENV NEXT_PUBLIC_API_PREFIX=$NEXT_PUBLIC_API_PREFIX
ENV NEXT_DIST_DIR=$NEXT_DIST_DIR
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build

FROM node:22-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
ENV NEXT_PUBLIC_API_URL=http://backend:8000
ENV NEXT_PUBLIC_DEFAULT_TIME_ZONE=Asia/Bangkok
ARG NEXT_PUBLIC_PRODUCT_FLAVOR=zimphony
ARG NEXT_PUBLIC_MAILMALI_BAP_READONLY_API_ENABLED=false
ARG NEXT_PUBLIC_MAILMALI_BAP_API_BASE_URL=
ENV NEXT_PUBLIC_PRODUCT_FLAVOR=$NEXT_PUBLIC_PRODUCT_FLAVOR
ENV NEXT_PUBLIC_MAILMALI_BAP_READONLY_API_ENABLED=$NEXT_PUBLIC_MAILMALI_BAP_READONLY_API_ENABLED
ENV NEXT_PUBLIC_MAILMALI_BAP_API_BASE_URL=$NEXT_PUBLIC_MAILMALI_BAP_API_BASE_URL
ENV INTERNAL_API_UPSTREAM=http://backend:8000
ENV INTERNAL_ADMIN_API_UPSTREAM=http://backend:8000
ARG NEXT_BASE_PATH=
ARG NEXT_ASSET_PREFIX=
ARG NEXT_PUBLIC_API_PREFIX=/api
ARG NEXT_DIST_DIR=.next
ENV NEXT_BASE_PATH=$NEXT_BASE_PATH
ENV NEXT_ASSET_PREFIX=$NEXT_ASSET_PREFIX
ENV NEXT_PUBLIC_API_PREFIX=$NEXT_PUBLIC_API_PREFIX
ENV NEXT_DIST_DIR=$NEXT_DIST_DIR
COPY package.json package-lock.json ./
RUN npm ci --omit=dev --ignore-scripts --no-audit --no-fund
COPY --from=builder /app/${NEXT_DIST_DIR} ./${NEXT_DIST_DIR}
COPY --from=builder /app/public ./public

EXPOSE 3000
EXPOSE 3001
CMD ["npm", "run", "start"]
