# Its own image (not built into apps/api's) — the admin app is deployed # independently of the main app. Build stage compiles the Vite bundle from # the monorepo; runtime is a plain static nginx serving that bundle. # # Build context is the repo root (like apps/api/Dockerfile) — the workspace # packages (@batch-cooking/shared, @batch-cooking/date-tools) must resolve. FROM node:22-slim AS build RUN corepack enable WORKDIR /repo # Skip Cypress's Electron binary download — this image never runs it. ENV CYPRESS_INSTALL_BINARY=0 COPY . . RUN pnpm install --frozen-lockfile # The admin bundle bakes in VITE_ADMIN_API_URL at build time. Default "" # (same-origin — correct behind a shared reverse proxy); override with # `--build-arg VITE_ADMIN_API_URL=https://api.example.com` when the admin # app is served from a different origin than the API. ARG VITE_ADMIN_API_URL="" ENV VITE_ADMIN_API_URL=$VITE_ADMIN_API_URL RUN pnpm --filter admin-web build FROM nginx:alpine AS runtime COPY apps/admin-web/nginx.conf /etc/nginx/conf.d/default.conf COPY --from=build /repo/apps/admin-web/dist /usr/share/nginx/html EXPOSE 80