version: '3.8'
services:
mcp-server:
build:
context: .
dockerfile: Dockerfile
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- PORT=3000
- MCP_SERVER_URL=${MCP_SERVER_URL:-http://localhost:3000}
- SUPABASE_URL=${SUPABASE_URL}
- DATABASE_URL=${DATABASE_URL}
- REDIS_URL=redis://redis:6379
- SESSION_SECRET=${SESSION_SECRET}
- LOG_LEVEL=${LOG_LEVEL:-info}
- LOG_FORMAT=json
- APM_ENABLED=${APM_ENABLED:-true}
- DB_POOL_MAX=${DB_POOL_MAX:-10}
- QUEUE_MAX_CONCURRENT=${QUEUE_MAX_CONCURRENT:-10}
- QUEUE_MAX_SIZE=${QUEUE_MAX_SIZE:-1000}
depends_on:
redis:
condition: service_healthy
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/health/live"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
deploy:
resources:
limits:
cpus: '1'
memory: 512M
reservations:
cpus: '0.25'
memory: 128M
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
networks:
- atomic-crm-network
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redis-data:/data
command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
deploy:
resources:
limits:
cpus: '0.5'
memory: 256M
reservations:
cpus: '0.1'
memory: 64M
networks:
- atomic-crm-network
volumes:
redis-data:
driver: local
networks:
atomic-crm-network:
driver: bridge