# MCP Gateway Docker Compose Configuration
#
# Usage:
# docker-compose up -d # Start in background
# docker-compose logs -f # View logs
# docker-compose down # Stop
version: '3.8'
services:
mcp-gateway:
build:
context: .
dockerfile: Dockerfile
image: mcp-gateway:latest
container_name: mcp-gateway
restart: unless-stopped
ports:
- "${PORT:-3010}:3010"
environment:
- NODE_ENV=production
- PORT=3010
- HOST=0.0.0.0
- LOG_LEVEL=${LOG_LEVEL:-info}
- GATEWAY_NAME=${GATEWAY_NAME:-mcp-gateway}
# Authentication (optional)
- AUTH_MODE=${AUTH_MODE:-none}
- API_KEYS=${API_KEYS:-}
# OAuth (optional)
- OAUTH_ISSUER=${OAUTH_ISSUER:-}
- OAUTH_AUDIENCE=${OAUTH_AUDIENCE:-}
- OAUTH_JWKS_URI=${OAUTH_JWKS_URI:-}
# Rate limiting
- RATE_LIMIT_WINDOW_MS=${RATE_LIMIT_WINDOW_MS:-60000}
- RATE_LIMIT_MAX_REQUESTS=${RATE_LIMIT_MAX_REQUESTS:-100}
# Backend server environment variables (add your own)
- GITHUB_TOKEN=${GITHUB_TOKEN:-}
- REMOTE_API_KEY=${REMOTE_API_KEY:-}
volumes:
# Mount custom server configuration
- ./config/servers.json:/app/config/servers.json:ro
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3010/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
networks:
- mcp-network
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
networks:
mcp-network:
driver: bridge