version: '3.8'
services:
uml-mcp:
build:
context: .
dockerfile: Dockerfile
container_name: uml-mcp-server
restart: unless-stopped
environment:
# PlantUML配置
- PLANTUML_JAR_PATH=/app/plantuml.jar
- JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
# 应用配置
- UML_TEMP_DIR=/app/temp
- UML_CACHE_DIR=/app/cache
- UML_LOG_LEVEL=INFO
- UML_MAX_FILE_SIZE=10485760 # 10MB
- UML_TIMEOUT=30
- UML_MAX_CONCURRENT=10
- UML_CACHE_ENABLED=true
- UML_CACHE_TTL=3600 # 1小时
- UML_CACHE_MAX_SIZE=1000
# MCP配置
- MCP_SERVER_NAME=uml-renderer
- MCP_SERVER_VERSION=1.0.0
volumes:
# 持久化缓存和日志
- uml_cache:/app/cache
- uml_logs:/app/logs
- uml_temp:/app/temp
ports:
# 如果需要HTTP接口可以暴露端口
- "8000:8000"
# 资源限制
deploy:
resources:
limits:
cpus: '2.0'
memory: 1G
reservations:
cpus: '0.5'
memory: 256M
# 健康检查
healthcheck:
test: ["CMD", "python", "-c", "import subprocess; subprocess.run(['java', '-jar', '/app/plantuml.jar', '-version'], check=True)"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# 网络配置
networks:
- uml_network
# 数据卷
volumes:
uml_cache:
driver: local
uml_logs:
driver: local
uml_temp:
driver: local
# 网络配置
networks:
uml_network:
driver: bridge