- scripts/screenshots.py + scripts/Dockerfile.shots: playwright-in-compose runner, 7 demo shots against the seeded stack (DinD-safe, output volume) - docker-compose.yml: api + web services (nginx SPA + /api proxy-less via build-arg VITE_API_BASE), shots service with volume output - apps/api: add CORSMiddleware (SPA origin web:80 could not read api:8000), batch scoring now refuses to rewrite applications beyond discovered/scored (kanban page load previously reset sent/interviewing to scored), prompt-aware cv_tailor mock so demo passes hallucination guard, hallucination-guard tests repointed to monkeypatched run_task - apps/web: Applications kanban batches only unscored applications, red flag display falls back to stored rationale - 159 api tests + 14 web tests green after fixes
14 lines
446 B
Docker
14 lines
446 B
Docker
# Web production image: build the SPA, serve via nginx with SPA fallback
|
|
FROM node:22-alpine AS build
|
|
WORKDIR /w
|
|
ARG VITE_API_BASE=http://api:8000/api
|
|
ENV VITE_API_BASE=$VITE_API_BASE
|
|
COPY apps/web/package.json apps/web/package-lock.json ./
|
|
RUN npm ci --no-audit --no-fund
|
|
COPY apps/web ./
|
|
RUN npm run build
|
|
|
|
FROM nginx:1.27-alpine
|
|
COPY apps/web/nginx.conf /etc/nginx/conf.d/default.conf
|
|
COPY --from=build /w/dist /usr/share/nginx/html
|
|
EXPOSE 80
|