Skip to main content

Services

Startup Order

  1. db and minio start in parallel
  2. Health checks must pass before backend starts
  3. Backend runs entrypoint.sh: creates tables via Base.metadata.create_all(), seeds if SEED_DB=true
  4. frontend starts after backend is up

Volumes

Network

All services on nil-net bridge network. Frontend proxies /api/* to backend:8000 via Vite config.

Backend Dockerfile

Key: PYTHONPATH=/app is required because the volume mount overrides the installed package. entrypoint.sh handles migrations + seeding before starting uvicorn.