# syntax=docker/dockerfile:1
# KeluargaMart POS 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/pos/ apps/pos/

ARG VITE_API_URL=""
ARG VITE_USE_MOCKS=false
ARG VITE_APP_ENV="production"
ENV VITE_API_URL=$VITE_API_URL
ENV VITE_USE_MOCKS=$VITE_USE_MOCKS
ENV VITE_APP_ENV=$VITE_APP_ENV

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

FROM nginx:1.29-alpine AS runner
COPY --from=build /app/apps/pos/dist /usr/share/nginx/html
COPY apps/pos/deploy/nginx-entrypoint.sh /usr/local/bin/nginx-entrypoint.sh

RUN chmod +x /usr/local/bin/nginx-entrypoint.sh \
  && printf '%s\n' \
  'server {' \
  '  listen 8080;' \
  '  port_in_redirect off;' \
  '  absolute_redirect off;' \
  '  root /usr/share/nginx/html;' \
  '  location / { try_files $uri $uri/ /index.html; }' \
  '}' > /etc/nginx/conf.d/default.conf \
  && mkdir -p /var/cache/nginx/client_temp /var/cache/nginx/proxy_temp /var/cache/nginx/fastcgi_temp /var/cache/nginx/uwsgi_temp /var/cache/nginx/scgi_temp \
  && chown -R nginx:nginx /var/cache/nginx /run /usr/share/nginx/html \
  && chown nginx:nginx /etc/nginx/conf.d/default.conf \
  && chmod -R g+w /var/cache/nginx

USER nginx
EXPOSE 8080
ENTRYPOINT ["/usr/local/bin/nginx-entrypoint.sh"]
