docker-compose.yml•2.24 kB
version: '3.8'
services:
stock-mcp:
build: .
container_name: stock-mcp
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- PORT=3000
- ALPHA_VANTAGE_API_KEY=${ALPHA_VANTAGE_API_KEY}
volumes:
- ./logs:/app/logs
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/mcp"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
- mcp-network
currency-mcp:
build: .
container_name: currency-mcp
ports:
- "3001:3001"
environment:
- NODE_ENV=production
- PORT=3001
- EXCHANGE_RATE_API_KEY=${EXCHANGE_RATE_API_KEY}
volumes:
- ./logs:/app/logs
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3001/mcp"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
- mcp-network
time-mcp:
build: .
container_name: time-mcp
ports:
- "3002:3002"
environment:
- NODE_ENV=production
- PORT=3002
volumes:
- ./logs:/app/logs
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3002/mcp"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
- mcp-network
units-mcp:
build: .
container_name: units-mcp
ports:
- "3003:3003"
environment:
- NODE_ENV=production
- PORT=3003
volumes:
- ./logs:/app/logs
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3003/mcp"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
- mcp-network
nginx:
image: nginx:alpine
container_name: mcp-nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx-mcp-servers.conf:/etc/nginx/conf.d/default.conf:ro
- ./ssl:/etc/nginx/ssl:ro
depends_on:
- stock-mcp
- currency-mcp
- time-mcp
- units-mcp
restart: unless-stopped
networks:
- mcp-network
networks:
mcp-network:
driver: bridge
volumes:
logs:
driver: local