services: neo4j: image: neo4j:2025.06-community container_name: neo4j ports: - 7474:7474 - 7687:7687 environment: - NEO4J_AUTH=neo4j/testpassword - NEO4J_PLUGINS=["apoc"] - NEO4J_dbms_security_procedures_unrestricted=apoc.* - NEO4J_dbms_security_procedures_allowlist=apoc.* networks: - testnet healthcheck: test: ["CMD", "cypher-shell", "-u", "neo4j", "-p", "testpassword", "MATCH () RETURN count(*) as count"] interval: 10s timeout: 10s retries: 15 start_period: 30s # Separate initialization container needed because Neo4j doesn't auto-run init scripts. # Unlike PostgreSQL/MySQL that have /docker-entrypoint-initdb.d/, Neo4j doesn't # automatically execute .cypher files, so we need this container to load test data. neo4j-init: image: neo4j:2025.06-community container_name: neo4j-init depends_on: neo4j: condition: service_healthy volumes: - ./setup/init.cypher:/init.cypher command: > bash -c " cypher-shell -a neo4j://neo4j:7687 -u neo4j -p testpassword -f /init.cypher " networks: - testnet networks: testnet: