docker-compose.yml•2.68 kB
version: '3.8'
services:
expert-registry-mcp:
build:
context: .
dockerfile: Dockerfile
target: production
container_name: expert-registry-mcp
restart: unless-stopped
environment:
# MCP Server Configuration
- EXPERT_SYSTEM_PATH=/app/expert-system
- EMBEDDING_MODEL=all-MiniLM-L6-v2
# Database Configuration
- NEO4J_URI=bolt://neo4j:7687
- NEO4J_PASSWORD=expertregistry
# Performance Settings
- PYTHONUNBUFFERED=1
- PYTHONDONTWRITEBYTECODE=1
volumes:
# Map expert system data to host for easy editing and persistence
- ./expert-system:/app/expert-system:rw
- ./chroma_db:/app/chroma_db:rw
# Optional: Mount for custom configurations
- ./config:/app/config:ro
depends_on:
neo4j:
condition: service_healthy
networks:
- expert-registry-network
# Health check
healthcheck:
test: ["CMD", "python", "-c", "import sys; sys.exit(0)"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
# Expose port for SSE transport and health checks
ports:
- "8000:8000" # MCP server SSE transport
# Neo4j Graph Database
neo4j:
image: neo4j:5.15-community
container_name: expert-registry-neo4j
restart: unless-stopped
environment:
- NEO4J_AUTH=neo4j/expertregistry
- NEO4J_PLUGINS=["apoc"]
- NEO4J_dbms_security_procedures_unrestricted=apoc.*
- NEO4J_dbms_memory_heap_initial__size=512m
- NEO4J_dbms_memory_heap_max__size=1G
volumes:
- neo4j_data:/data
- neo4j_logs:/logs
- neo4j_import:/var/lib/neo4j/import
- neo4j_plugins:/plugins
ports:
- "7474:7474" # HTTP
- "7687:7687" # Bolt
networks:
- expert-registry-network
healthcheck:
test: ["CMD", "cypher-shell", "-u", "neo4j", "-p", "expertregistry", "RETURN 1"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
# Optional: Redis for caching (can be enabled if needed)
redis:
image: redis:7-alpine
container_name: expert-registry-redis
restart: unless-stopped
command: redis-server --appendonly yes
volumes:
- redis_data:/data
ports:
- "6379:6379"
networks:
- expert-registry-network
profiles:
- with-redis
volumes:
neo4j_data:
driver: local
neo4j_logs:
driver: local
neo4j_import:
driver: local
neo4j_plugins:
driver: local
redis_data:
driver: local
networks:
expert-registry-network:
driver: bridge
name: expert-registry-network