- Create individual Dockerfiles for each of the 7 MCP servers - Add docker-compose.yml for orchestrating all services - Create build-docker.sh script for easy container building - Add comprehensive Docker deployment documentation (DOCKER.md) - Update main README with Docker installation instructions - Add .env.example template for environment configuration - Configure each server with dedicated ports (3000-3006) - Implement security best practices (non-root user, minimal base image) - Add production deployment considerations and troubleshooting guide Each server can now be run individually or all together using Docker Compose, making deployment and scaling much easier for production environments. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
125 lines
3.3 KiB
YAML
125 lines
3.3 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
portainer-core:
|
|
build:
|
|
context: .
|
|
dockerfile: docker/Dockerfile.core
|
|
container_name: portainer-mcp-core
|
|
ports:
|
|
- "3000:3000"
|
|
environment:
|
|
- PORTAINER_URL=${PORTAINER_URL}
|
|
- PORTAINER_API_KEY=${PORTAINER_API_KEY}
|
|
- PORTAINER_INSECURE=${PORTAINER_INSECURE:-false}
|
|
- HTTP_TIMEOUT=${HTTP_TIMEOUT:-30}
|
|
- MAX_RETRIES=${MAX_RETRIES:-3}
|
|
restart: unless-stopped
|
|
networks:
|
|
- portainer-mcp
|
|
|
|
portainer-environments:
|
|
build:
|
|
context: .
|
|
dockerfile: docker/Dockerfile.environments
|
|
container_name: portainer-mcp-environments
|
|
ports:
|
|
- "3001:3001"
|
|
environment:
|
|
- PORTAINER_URL=${PORTAINER_URL}
|
|
- PORTAINER_API_KEY=${PORTAINER_API_KEY}
|
|
- PORTAINER_INSECURE=${PORTAINER_INSECURE:-false}
|
|
- HTTP_TIMEOUT=${HTTP_TIMEOUT:-30}
|
|
- MAX_RETRIES=${MAX_RETRIES:-3}
|
|
restart: unless-stopped
|
|
networks:
|
|
- portainer-mcp
|
|
|
|
portainer-docker:
|
|
build:
|
|
context: .
|
|
dockerfile: docker/Dockerfile.docker
|
|
container_name: portainer-mcp-docker
|
|
ports:
|
|
- "3002:3002"
|
|
environment:
|
|
- PORTAINER_URL=${PORTAINER_URL}
|
|
- PORTAINER_API_KEY=${PORTAINER_API_KEY}
|
|
- PORTAINER_INSECURE=${PORTAINER_INSECURE:-false}
|
|
- HTTP_TIMEOUT=${HTTP_TIMEOUT:-30}
|
|
- MAX_RETRIES=${MAX_RETRIES:-3}
|
|
restart: unless-stopped
|
|
networks:
|
|
- portainer-mcp
|
|
|
|
portainer-kubernetes:
|
|
build:
|
|
context: .
|
|
dockerfile: docker/Dockerfile.kubernetes
|
|
container_name: portainer-mcp-kubernetes
|
|
ports:
|
|
- "3003:3003"
|
|
environment:
|
|
- PORTAINER_URL=${PORTAINER_URL}
|
|
- PORTAINER_API_KEY=${PORTAINER_API_KEY}
|
|
- PORTAINER_INSECURE=${PORTAINER_INSECURE:-false}
|
|
- HTTP_TIMEOUT=${HTTP_TIMEOUT:-30}
|
|
- MAX_RETRIES=${MAX_RETRIES:-3}
|
|
restart: unless-stopped
|
|
networks:
|
|
- portainer-mcp
|
|
|
|
portainer-stacks:
|
|
build:
|
|
context: .
|
|
dockerfile: docker/Dockerfile.stacks
|
|
container_name: portainer-mcp-stacks
|
|
ports:
|
|
- "3004:3004"
|
|
environment:
|
|
- PORTAINER_URL=${PORTAINER_URL}
|
|
- PORTAINER_API_KEY=${PORTAINER_API_KEY}
|
|
- PORTAINER_INSECURE=${PORTAINER_INSECURE:-false}
|
|
- HTTP_TIMEOUT=${HTTP_TIMEOUT:-30}
|
|
- MAX_RETRIES=${MAX_RETRIES:-3}
|
|
restart: unless-stopped
|
|
networks:
|
|
- portainer-mcp
|
|
|
|
portainer-edge:
|
|
build:
|
|
context: .
|
|
dockerfile: docker/Dockerfile.edge
|
|
container_name: portainer-mcp-edge
|
|
ports:
|
|
- "3005:3005"
|
|
environment:
|
|
- PORTAINER_URL=${PORTAINER_URL}
|
|
- PORTAINER_API_KEY=${PORTAINER_API_KEY}
|
|
- PORTAINER_INSECURE=${PORTAINER_INSECURE:-false}
|
|
- HTTP_TIMEOUT=${HTTP_TIMEOUT:-30}
|
|
- MAX_RETRIES=${MAX_RETRIES:-3}
|
|
restart: unless-stopped
|
|
networks:
|
|
- portainer-mcp
|
|
|
|
portainer-gitops:
|
|
build:
|
|
context: .
|
|
dockerfile: docker/Dockerfile.gitops
|
|
container_name: portainer-mcp-gitops
|
|
ports:
|
|
- "3006:3006"
|
|
environment:
|
|
- PORTAINER_URL=${PORTAINER_URL}
|
|
- PORTAINER_API_KEY=${PORTAINER_API_KEY}
|
|
- PORTAINER_INSECURE=${PORTAINER_INSECURE:-false}
|
|
- HTTP_TIMEOUT=${HTTP_TIMEOUT:-30}
|
|
- MAX_RETRIES=${MAX_RETRIES:-3}
|
|
restart: unless-stopped
|
|
networks:
|
|
- portainer-mcp
|
|
|
|
networks:
|
|
portainer-mcp:
|
|
driver: bridge |