version: '3.8' # Services-only Docker Compose for local development # Use this when running the Discord Fishbowl application locally # but want PostgreSQL, Redis, and ChromaDB in containers services: postgres: image: postgres:15 container_name: fishbowl_postgres environment: POSTGRES_DB: discord_fishbowl POSTGRES_USER: postgres POSTGRES_PASSWORD: ${DB_PASSWORD:-fishbowl_password} volumes: - postgres_data:/var/lib/postgresql/data - ./init-scripts:/docker-entrypoint-initdb.d ports: - "5432:5432" restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 30s timeout: 10s retries: 3 redis: image: redis:7-alpine container_name: fishbowl_redis command: redis-server --requirepass ${REDIS_PASSWORD:-redis_password} ports: - "6379:6379" volumes: - redis_data:/data restart: unless-stopped healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 30s timeout: 10s retries: 3 chromadb: image: chromadb/chroma:latest container_name: fishbowl_chromadb ports: - "8000:8000" volumes: - chroma_data:/chroma/chroma environment: - IS_PERSISTENT=TRUE - CHROMA_SERVER_HOST=0.0.0.0 - CHROMA_SERVER_HTTP_PORT=8000 restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/api/v1/heartbeat"] interval: 30s timeout: 10s retries: 3 profiles: - chromadb qdrant: image: qdrant/qdrant:latest container_name: fishbowl_qdrant ports: - "6333:6333" - "6334:6334" volumes: - qdrant_data:/qdrant/storage environment: - QDRANT__SERVICE__HTTP_PORT=6333 - QDRANT__SERVICE__GRPC_PORT=6334 restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:6333/health"] interval: 30s timeout: 10s retries: 3 profiles: - qdrant # Optional: PgAdmin for database management pgadmin: image: dpage/pgadmin4:latest container_name: fishbowl_pgadmin environment: PGADMIN_DEFAULT_EMAIL: admin@fishbowl.dev PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_PASSWORD:-admin123} ports: - "8080:80" volumes: - pgadmin_data:/var/lib/pgadmin depends_on: - postgres restart: unless-stopped profiles: - admin volumes: postgres_data: redis_data: chroma_data: qdrant_data: pgadmin_data: