portainer-mcp/docker-compose.yml
Adolfo Delorenzo 2098453ff1 feat: add Docker support for all MCP servers
- 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>
2025-07-21 00:12:39 -03:00

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