version: '3.8' services: # Main RAG application app: build: . container_name: rag-chatbot ports: - "7860:7860" environment: - GROQ_API_KEY=${GROQ_API_KEY} - QDRANT_API_KEY=${QDRANT_API_KEY} - REDIS_PASSWORD=${REDIS_PASSWORD} env_file: - .env volumes: - ./uploads:/app/uploads - ./logs:/app/logs depends_on: - redis restart: unless-stopped networks: - rag-network # Redis for caching redis: image: redis:7-alpine container_name: rag-redis ports: - "6379:6379" command: redis-server --appendonly yes volumes: - redis-data:/data restart: unless-stopped networks: - rag-network # Celery worker (optional) celery-worker: build: . container_name: rag-celery-worker command: celery -A app.tasks.celery_app worker --loglevel=info environment: - GROQ_API_KEY=${GROQ_API_KEY} - QDRANT_API_KEY=${QDRANT_API_KEY} - REDIS_PASSWORD=${REDIS_PASSWORD} env_file: - .env depends_on: - redis - app restart: unless-stopped networks: - rag-network volumes: redis-data: networks: rag-network: driver: bridge