Skip to main content

Deploy with Docker

Dependencies only (local app development)

pnpm dev:deps
pnpm dev:deps:logs
pnpm dev:deps:down

Starts MongoDB and Redis only, so apps/api, apps/worker, and apps/web can run natively with pnpm dev:apps. This is the default local workflow; it deliberately does not boot the full app stack.

Full stack in containers

pnpm docker:up
pnpm docker:logs
pnpm docker:down

This uses docker-compose.fullapp.yml and starts MongoDB (27017), Redis (6379), the API (3000), the worker (3002), and the web app (3001).

Override any port or the API URL the web app targets:

API_PORT=4000 WEB_PORT=4001 WORKER_PORT=4002 pnpm docker:up
NEXT_PUBLIC_API_URL=http://localhost:4000 pnpm docker:up

To reset all container data:

docker compose down -v
docker compose -f docker-compose.fullapp.yml down -v

Health checks

Both the API and worker expose /health (readiness — verifies MongoDB and Redis, returns 503 if either is down), /health/ready (same check), and /health/live (liveness only, no dependency checks). Point your orchestrator's liveness probe at /health/live and its readiness probe at /health/ready.

Configuration in containers

Runtime configuration is validated with Zod at startup. Pass environment variables through your container platform rather than committing .env files — see the Environment Variables reference for the full list, including optional tuning (BROWSER_POOL_MAX, CHALLENGER_CONFIG_CACHE_TTL_MS, CHALLENGER_ALLOWED_CAPABILITIES).