mcwaddams/docker-compose.yml

50 lines
1.5 KiB
YAML

# mcwaddams MCP Server - Docker Compose
# "I could set the building on fire..."
services:
mcwaddams:
build:
context: .
dockerfile: Dockerfile
target: production
container_name: mcwaddams-mcp
restart: unless-stopped
environment:
- MCP_TRANSPORT=streamable-http
- MCP_HOST=0.0.0.0
- MCP_PORT=8000
- DEBUG=${DEBUG:-false}
- OFFICE_TEMP_DIR=/tmp/mcwaddams
volumes:
# Temp directory for document processing
- mcwaddams-temp:/tmp/mcwaddams
networks:
- caddy
labels:
# Caddy-docker-proxy labels for /mcp endpoint
caddy: ${MCWADDAMS_HOST:-mcwaddams.l.supported.systems}
caddy.@mcp.path: /mcp/*
caddy.@mcp.path_strip: /mcp
caddy.handle: "@mcp"
caddy.handle.reverse_proxy: "{{upstreams 8000}}"
caddy.handle.reverse_proxy.flush_interval: "-1"
caddy.handle.reverse_proxy.transport: "http"
caddy.handle.reverse_proxy.transport.read_timeout: "0"
caddy.handle.reverse_proxy.transport.write_timeout: "0"
caddy.handle.reverse_proxy.stream_timeout: "24h"
caddy.handle.reverse_proxy.header_up.Connection: "{http.request.header.Connection}"
caddy.handle.reverse_proxy.header_up.Upgrade: "{http.request.header.Upgrade}"
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
volumes:
mcwaddams-temp:
networks:
caddy:
external: true