diff --git a/docker/docker-compose-dev.yaml b/docker/docker-compose-dev.yaml index 6d00d71f..07216279 100644 --- a/docker/docker-compose-dev.yaml +++ b/docker/docker-compose-dev.yaml @@ -2,6 +2,7 @@ # Usage: docker-compose -f docker-compose-dev.yaml up --build # # Services: +# - postgres: PostgreSQL 16 (port 5432) — Stage 0+ default DB backend # - nginx: Reverse proxy (port 2026) # - frontend: Frontend Next.js dev server (port 3000) # - gateway: Backend Gateway API + agent runtime (port 8001) @@ -13,6 +14,30 @@ # Access: http://localhost:2026 services: + # ── Database (Stage 0+ default backend) ──────────────────────────────── + # Postgres for local dev. Production may point DATABASE_URL at a remote RDS; + # this service can then be omitted via `docker compose --profile `. + postgres: + image: postgres:16-alpine + container_name: deer-flow-postgres + environment: + POSTGRES_USER: ${POSTGRES_USER:-deerflow} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-deerflow_dev} + POSTGRES_DB: ${POSTGRES_DB:-deerflow} + ports: + - "${POSTGRES_PORT:-5432}:5432" + volumes: + - postgres-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-deerflow} -d ${POSTGRES_DB:-deerflow}"] + interval: 5s + timeout: 3s + retries: 5 + start_period: 10s + networks: + - deer-flow-dev + restart: unless-stopped + # ── Sandbox Provisioner ──────────────────────────────────────────────── # Manages per-sandbox Pod + Service lifecycle in the host Kubernetes # cluster via the K8s API. @@ -178,6 +203,8 @@ volumes: # image build are not shadowed by the host backend/ directory mount. gateway-venv: gateway-uv-cache: + # Persist Postgres data across container restarts. + postgres-data: networks: deer-flow-dev: