version: '3.8'
services:
neo4j:
image: neo4j:5
container_name: neo4j-kg
ports:
- "7474:7474" # Browser interface
- "7687:7687" # Bolt protocol
environment:
- NEO4J_AUTH=${NEO4J_USER:-neo4j}/${NEO4J_PASSWORD:-neo4jpassword}
- NEO4J_PLUGINS=["apoc"]
- NEO4J_dbms_security_procedures_unrestricted=apoc.*
volumes:
- neo4j-data:/data
- neo4j-logs:/logs
networks:
- neo4j-network
healthcheck:
test: ["CMD", "cypher-shell", "-u", "${NEO4J_USER:-neo4j}", "-p", "${NEO4J_PASSWORD:-neo4jpassword}", "RETURN 1"]
interval: 10s
timeout: 5s
retries: 5
neo4j-mcp:
build: .
container_name: neo4j-mcp-server
environment:
- NEO4J_URI=bolt://neo4j:7687
- NEO4J_USER=${NEO4J_USER:-neo4j}
- NEO4J_PASSWORD=${NEO4J_PASSWORD:-neo4jpassword}
- LOG_LEVEL=${LOG_LEVEL:-info}
networks:
- neo4j-network
depends_on:
neo4j:
condition: service_healthy
stdin_open: true
tty: true
volumes:
neo4j-data:
neo4j-logs:
networks:
neo4j-network:
driver: bridge