docker-compose.ymlā¢2.61 kB
version: '3.8'
services:
# Qdrant Vector Database
qdrant:
image: qdrant/qdrant:latest
container_name: mcp-qdrant
ports:
- "6333:6333"
- "6334:6334"
volumes:
- qdrant_data:/qdrant/storage
environment:
- QDRANT__SERVICE__HTTP_PORT=6333
- QDRANT__SERVICE__GRPC_PORT=6334
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:6333/health"]
interval: 30s
timeout: 10s
retries: 5
start_period: 30s
restart: unless-stopped
networks:
- mcp-network
# MCP Memory Server
mcp-server:
build:
context: .
dockerfile: Dockerfile
target: production
container_name: mcp-memory-server
depends_on:
qdrant:
condition: service_healthy
environment:
# Server Configuration
- MCP_SERVER_NAME=memory-server-docker
- LOG_LEVEL=INFO
- LOG_FILE=/app/logs/server.log
# Qdrant Configuration
- QDRANT_HOST=qdrant
- QDRANT_PORT=6333
- QDRANT_MODE=remote
# Embedding Configuration
- EMBEDDING_MODEL=all-MiniLM-L6-v2
- EMBEDDING_DEVICE=cpu
- EMBEDDING_CACHE_FOLDER=/app/data/embeddings
# Performance Tuning
- MARKDOWN_CHUNK_SIZE=1000
- MARKDOWN_CHUNK_OVERLAP=200
- MEMORY_DEDUPLICATION_THRESHOLD=0.95
volumes:
- ./data:/app/data
- ./logs:/app/logs
- ./policy:/app/policy
- ./docs:/app/docs:ro
networks:
- mcp-network
restart: unless-stopped
healthcheck:
test: ["CMD", "python", "-c", "import src.server_config; print('OK')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
# Optional: Monitoring with Prometheus (commented out by default)
# prometheus:
# image: prom/prometheus:latest
# container_name: mcp-prometheus
# ports:
# - "9090:9090"
# volumes:
# - ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml:ro
# networks:
# - mcp-network
# restart: unless-stopped
# Optional: Log aggregation with ELK stack (commented out by default)
# elasticsearch:
# image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0
# container_name: mcp-elasticsearch
# environment:
# - discovery.type=single-node
# - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
# volumes:
# - elasticsearch_data:/usr/share/elasticsearch/data
# networks:
# - mcp-network
# restart: unless-stopped
volumes:
qdrant_data:
driver: local
elasticsearch_data:
driver: local
networks:
mcp-network:
driver: bridge