version: '3.8' services: postgres: image: postgres:15 environment: POSTGRES_DB: discord_fishbowl POSTGRES_USER: postgres POSTGRES_PASSWORD: ${DB_PASSWORD:-fishbowl_password} volumes: - postgres_data:/var/lib/postgresql/data 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 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 for vector storage chromadb: image: chromadb/chroma:latest ports: - "8000:8000" volumes: - chroma_data:/chroma/chroma environment: - IS_PERSISTENT=TRUE restart: unless-stopped fishbowl: build: . depends_on: - postgres - redis environment: DB_HOST: postgres REDIS_HOST: redis DB_PASSWORD: ${DB_PASSWORD} REDIS_PASSWORD: ${REDIS_PASSWORD} DISCORD_BOT_TOKEN: ${DISCORD_BOT_TOKEN} DISCORD_GUILD_ID: ${DISCORD_GUILD_ID} DISCORD_CHANNEL_ID: ${DISCORD_CHANNEL_ID} LLM_BASE_URL: ${LLM_BASE_URL} LLM_MODEL: ${LLM_MODEL} volumes: - ./logs:/app/logs - ./config:/app/config restart: unless-stopped volumes: postgres_data: redis_data: chroma_data: