docker-compose.yml•2.41 kB
x-common-env: &common-env
env_file: ./.env
networks:
lila-network:
volumes:
neo4j_data:
neo4j_logs:
neo4j_import:
neo4j_plugins:
minio_data:
redis_data:
services:
neo4j:
image: neo4j:latest
networks: [lila-network]
ports:
- "7474:7474"
- "7687:7687"
environment:
<<: *common-env
NEO4J_AUTH: "neo4j/${NEO4J_PASSWORD:-passw0rd}"
NEO4J_PLUGINS: '["apoc"]'
NEO4J_dbms_security_auth__enabled: "true"
healthcheck:
# succeeds once bolt is accepting auth
test: ["CMD-SHELL", "echo 'RETURN 1' | cypher-shell -a bolt://localhost:7687 -u neo4j -p \"$NEO4J_PASSWORD\" >/dev/null 2>&1"]
interval: 5s
timeout: 5s
retries: 30
volumes:
- neo4j_data:/data
- neo4j_logs:/logs
- neo4j_import:/var/lib/neo4j/import
- neo4j_plugins:/plugins
redis:
image: redis:7.2-alpine
networks: [lila-network]
ports: ["6379:6379"]
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 3s
retries: 20
volumes:
- redis_data:/data
minio:
image: minio/minio:latest
networks: [lila-network]
ports:
- "9000:9000"
- "9001:9001"
environment:
<<: *common-env
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin}
command: server /data --console-address ":9001"
volumes:
- minio_data:/data
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://localhost:9000/minio/health/live >/dev/null"]
interval: 5s
timeout: 3s
retries: 30
mcp-server:
image: ghcr.io/lila-graph/lila-mcp:local
networks: [lila-network]
depends_on:
neo4j: { condition: service_healthy }
redis: { condition: service_healthy }
minio: { condition: service_healthy }
environment:
<<: *common-env
NEO4J_URI: bolt://neo4j:7687
NEO4J_USER: ${NEO4J_USER:-neo4j}
NEO4J_PASSWORD: ${NEO4J_PASSWORD:-password}
LOG_LEVEL: ${LOG_LEVEL:-INFO}
# ✅ correct: use `run` with positional config path
command: ["uvx", "fastmcp", "run", "/app/fastmcp.json"]
ports:
- "8766:8766"
proxy:
image: nginx:1.25
networks: [lila-network]
depends_on:
- mcp-server
ports:
- "8080:8080"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro