services: # Application Tout-en-un (Django + Celery gérés par Supervisor) web: build: . volumes: - .:/app - data_volume:/app/data env_file: - .env environment: - DATABASE_URL=postgres://${POSTGRES_USER:-animetix}:${POSTGRES_PASSWORD:-secretpassword}@db:5432/${POSTGRES_DB:-animetix_db} - REDIS_URL=redis://redis:6379/1 ports: - "7860:7860" depends_on: - db - redis # Base de données PostgreSQL db: image: postgres:15-alpine environment: POSTGRES_USER: ${POSTGRES_USER:-animetix} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-secretpassword} POSTGRES_DB: ${POSTGRES_DB:-animetix_db} volumes: - postgres_data:/var/lib/postgresql/data ports: - "5432:5432" # Cache & Broker (Redis) redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis_data:/data # Base de données Vectorielle (ChromaDB) chromadb: image: chromadb/chroma:latest volumes: - chroma_data:/chroma/chroma ports: - "8001:8000" command: "--host 0.0.0.0 --port 8000 --path /chroma/chroma" # Observabilité : Prometheus prometheus: image: prom/prometheus:latest volumes: - ./infra/prometheus.yml:/etc/prometheus/prometheus.yml ports: - "9090:9090" # Observabilité : Grafana grafana: image: grafana/grafana:latest depends_on: - prometheus ports: - "3000:3000" environment: - GF_SECURITY_ADMIN_PASSWORD=admin # Base de données de Graphe (Neo4j) neo4j: image: neo4j:5-community ports: - "7474:7474" - "7687:7687" environment: - NEO4J_AUTH=${NEO4J_AUTH:-neo4j/secretpassword} volumes: - neo4j_data:/data # IA Locale (Ollama) ollama: image: ollama/ollama:latest volumes: - ollama_storage:/root/.ollama ports: - "11434:11434" volumes: data_volume: postgres_data: redis_data: chroma_data: neo4j_data: ollama_storage: