# syntax=docker/dockerfile:1
# KeluargaMart B2B Frontend — Multi-stage production build (pnpm workspace)
FROM node:22-alpine AS build
WORKDIR /app
RUN npm install -g pnpm@12.11.2

COPY package.json pnpm-workspace.yaml pnpm-lock.yaml turbo.json .npmrc ./
COPY packages/ packages/
COPY apps/b2b/ apps/b2b/

ARG NUXT_PUBLIC_API_BASE_URL=""
ARG NUXT_API_PROXY_TARGET=http://backend:8080
ENV NUXT_PUBLIC_API_BASE_URL=$NUXT_PUBLIC_API_BASE_URL
ENV NUXT_API_PROXY_TARGET=$NUXT_API_PROXY_TARGET
ENV NUXT_FONTS_PROVIDER=NONE

RUN pnpm install --frozen-lockfile
RUN pnpm --filter @keluargamart/b2b build

FROM node:22-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
ENV HOST=0.0.0.0
ENV PORT=3000
ENV NODE_OPTIONS="--max-old-space-size=256 --enable-source-maps=false"

RUN addgroup -g 10001 appuser \
    && adduser -D -u 10001 -G appuser appuser \
    && chown -R appuser:appuser /app
USER appuser

COPY --from=build /app/apps/b2b/.output ./output
EXPOSE 3000
CMD ["node", "./output/server/index.mjs"]
