version: '3.8' services: # Neo4j Knowledge Graph (Production Feature) neo4j: image: neo4j:5.15-community container_name: modelx-neo4j ports: - "7474:7474" # Browser UI - "7687:7687" # Bolt protocol environment: NEO4J_AUTH: neo4j/modelx2024 NEO4J_PLUGINS: '["apoc"]' NEO4J_dbms_security_procedures_unrestricted: "apoc.*" volumes: - ./data/neo4j/data:/data - ./data/neo4j/logs:/logs healthcheck: test: ["CMD-SHELL", "cypher-shell -u neo4j -p modelx2024 'RETURN 1' || exit 1"] interval: 10s timeout: 5s retries: 5 # Backend API backend: build: context: . dockerfile: Dockerfile ports: - "8000:8000" environment: - GROQ_API_KEY=${GROQ_API_KEY} - PYTHONUNBUFFERED=1 - NEO4J_ENABLED=true - NEO4J_URI=bolt://neo4j:7687 - NEO4J_USER=neo4j - NEO4J_PASSWORD=modelx2024 volumes: - ./src:/app/src - ./data:/app/data # Persist storage data command: python main.py depends_on: neo4j: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/api/status"] interval: 30s timeout: 10s retries: 3 # Frontend (Next.js) frontend: build: context: ./frontend dockerfile: Dockerfile ports: - "3000:3000" environment: - NEXT_PUBLIC_API_URL=http://backend:8000 depends_on: - backend volumes: - ./frontend:/app - /app/node_modules - /app/. next