# ============================================================================== # Animetix - Infrastructure Docker Compose (SOTA 2026) # ============================================================================== services: # 🌐 Backend Django (API Headless) web: build: context: .. dockerfile: deploy/Dockerfile container_name: animetix-backend command: python backend/api/manage.py runserver 0.0.0.0:8000 volumes: - ..:/app ports: - "8000:8000" env_file: - ../.env depends_on: - db - redis - neo4j # 🐘 Base de données Relationnelle (PostgreSQL avec pgvector) db: image: pgvector/pgvector:pg16 container_name: animetix-db environment: - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} volumes: - postgres_data:/var/lib/postgresql/data # ⚡ Cache & WebSockets (Redis) redis: image: redis:7-alpine container_name: animetix-redis volumes: - redis_data:/data # 🕸️ Graphe de Connaissances (Neo4j) neo4j: image: neo4j:5.20-enterprise container_name: animetix-neo4j environment: - NEO4J_AUTH=${NEO4J_AUTH} - NEO4J_PLUGINS=["apoc", "gds"] - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes volumes: - neo4j_data:/data # ⚙️ Celery Asynchronous Workers celery_worker: build: context: .. dockerfile: deploy/Dockerfile container_name: animetix-celery-worker command: celery -A animetix_project worker --loglevel=info volumes: - ..:/app env_file: - ../.env depends_on: - db - redis - neo4j # ⏱️ Celery Beat Scheduler celery_beat: build: context: .. dockerfile: deploy/Dockerfile container_name: animetix-celery-beat command: celery -A animetix_project beat --loglevel=info volumes: - ..:/app env_file: - ../.env depends_on: - db - redis # 🐏 Serveur d'Inférence Local (Ollama) ollama: profiles: ["llm"] image: ollama/ollama:latest container_name: animetix-ollama volumes: - ollama_storage:/root/.ollama deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] volumes: data_volume: postgres_data: redis_data: neo4j_data: ollama_storage: