# PostgreSQL overlay — pgvector for multi-tenant storage.
#
# Usage (with Web Dashboard):
#   docker compose -f docker-compose.yml -f docker-compose.postgres.yml -f docker-compose.selfservice.yml up -d --build
#
# Required env vars (set in .env or shell):
#   GOCLAW_OPENROUTER_API_KEY (or another provider key)
#   POSTGRES_PASSWORD (defaults to "goclaw" for dev)

services:
  postgres:
    image: pgvector/pgvector:pg18
    ports:
      - "${POSTGRES_PORT:-5432}:5432"
    environment:
      POSTGRES_USER: ${POSTGRES_USER:-goclaw}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-goclaw}
      POSTGRES_DB: ${POSTGRES_DB:-goclaw}
    volumes:
      - postgres-data:/var/lib/postgresql
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-goclaw} -d ${POSTGRES_DB:-goclaw}"]
      interval: 5s
      timeout: 5s
      retries: 10
    restart: unless-stopped

  goclaw:
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      - GOCLAW_POSTGRES_DSN=postgres://${POSTGRES_USER:-goclaw}:${POSTGRES_PASSWORD:-goclaw}@postgres:5432/${POSTGRES_DB:-goclaw}?sslmode=disable
    volumes:
      - goclaw-skills:/app/skills
      - goclaw-workspace:/app/.goclaw

volumes:
  postgres-data:
  goclaw-skills:
