services: neo4j: image: neo4j:5.26-community ports: - "7474:7474" - "7687:7687" environment: NEO4J_AUTH: "neo4j/${NEO4J_PASSWORD:?NEO4J_PASSWORD must be set in .env}" NEO4J_PLUGINS: '["apoc"]' NEO4J_dbms_memory_heap_max__size: 4G NEO4J_dbms_memory_pagecache_size: 2G volumes: - neo4j_data:/data healthcheck: test: ["CMD-SHELL", "wget -qO- http://localhost:7474 || exit 1"] interval: 10s timeout: 5s retries: 10 start_period: 30s backend: build: context: . dockerfile: Dockerfile.backend ports: - "8000:8000" env_file: .env environment: NEO4J_URI: bolt://neo4j:7687 NEO4J_USER: neo4j NEO4J_PASSWORD: "${NEO4J_PASSWORD}" volumes: - ./data:/app/data:ro depends_on: neo4j: condition: service_healthy restart: unless-stopped frontend: build: context: . dockerfile: Dockerfile.frontend args: NEXT_PUBLIC_API_URL: http://localhost:8000 ports: - "3000:3000" depends_on: - backend restart: unless-stopped volumes: neo4j_data: