# Docker Compose para RLM MCP Server
# Compatível com Dokploy + Traefik
#
# Expõe servidor HTTP/SSE na porta 8765
# Configure no Traefik para HTTPS via domínio
services:
rlm-mcp:
build:
context: .
dockerfile: Dockerfile
container_name: rlm-mcp-server
restart: unless-stopped
environment:
# Memória máxima para variáveis (em MB)
- RLM_MAX_MEMORY_MB=${RLM_MAX_MEMORY_MB:-1024}
# Porta HTTP
- RLM_PORT=8765
# API Key (opcional, mas recomendado em produção)
- RLM_API_KEY=${RLM_API_KEY:-}
# Sub-chamadas LLM (RLM - Recursive Language Model)
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
- RLM_SUB_MODEL=${RLM_SUB_MODEL:-gpt-4o-mini}
- RLM_MAX_SUB_CALLS=${RLM_MAX_SUB_CALLS:-100}
# Minio/S3 para carregar arquivos grandes
- MINIO_ENDPOINT=${MINIO_ENDPOINT:-}
- MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY:-}
- MINIO_SECRET_KEY=${MINIO_SECRET_KEY:-}
- MINIO_SECURE=${MINIO_SECURE:-true}
volumes:
# Monte seus dados aqui - serão acessíveis via /data no container
- rlm-data:/data:ro
# Expõe porta
ports:
- "8765:8765"
# Limites de recursos
deploy:
resources:
limits:
cpus: '2'
memory: 2G
reservations:
cpus: '0.25'
memory: 256M
networks:
- dokploy-network
# Labels para Traefik (Dokploy usa Traefik)
labels:
- "traefik.enable=true"
- "traefik.http.routers.rlm-mcp.rule=Host(`rlm.drsolution.online`)"
- "traefik.http.routers.rlm-mcp.entrypoints=websecure"
- "traefik.http.routers.rlm-mcp.tls.certresolver=letsencrypt"
- "traefik.http.services.rlm-mcp.loadbalancer.server.port=8765"
# Healthcheck
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8765/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 15s
# Comando: HTTP server
command: ["python", "-m", "rlm_mcp.http_server"]
volumes:
rlm-data:
driver: local
networks:
dokploy-network:
external: true