20 lines
683 B
Docker
20 lines
683 B
Docker
# Build context is the repository root: one image serves API + built SPA.
|
|
FROM node:20-slim AS frontend
|
|
WORKDIR /build
|
|
COPY frontend/package.json frontend/package-lock.json ./
|
|
RUN npm ci
|
|
COPY frontend/ ./
|
|
RUN npm run build
|
|
|
|
FROM ghcr.io/astral-sh/uv:python3.13-bookworm-slim AS live
|
|
WORKDIR /srv/backend
|
|
COPY backend/pyproject.toml backend/uv.lock ./
|
|
RUN uv sync --frozen --no-dev --no-install-project
|
|
COPY backend/app ./app
|
|
COPY eval/scenarios.yaml ../eval/scenarios.yaml
|
|
COPY --from=frontend /build/dist ./app/static
|
|
EXPOSE 8000
|
|
CMD ["uv", "run", "--no-sync", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
|
|
|
FROM live AS demo
|
|
COPY eval/fixtures ../eval/fixtures
|