docker-compose.yml•1.49 kB
version: '3.8'
services:
mysql-mcp-server:
build: .
container_name: mysql-mcp-server
ports:
- "8000:8000"
env_file:
- .env
environment:
- ENVIRONMENT=production
healthcheck:
test: ["CMD", "python", "-c", "import httpx; httpx.get('http://localhost:8000/health').raise_for_status()"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
restart: unless-stopped
networks:
- mcp-network
depends_on:
mysql:
condition: service_healthy
mysql:
image: mysql:8.0
container_name: mysql-mcp-db
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-rootpassword}
MYSQL_DATABASE: ${MYSQL_DATABASE:-mcp_database}
MYSQL_USER: ${MYSQL_USER:-mcp_user}
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-mcp_password}
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
- ./init-scripts:/docker-entrypoint-initdb.d
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
networks:
- mcp-network
# Optional: Adminer for database management
adminer:
image: adminer
container_name: mysql-mcp-adminer
ports:
- "8080:8080"
environment:
ADMINER_DEFAULT_SERVER: mysql
networks:
- mcp-network
depends_on:
- mysql
networks:
mcp-network:
driver: bridge
volumes:
mysql-data: