Create Docker deployment infrastructure

This commit provides production-ready Docker deployment for the HTTP MCP wrapper.

Components:
- Dockerfile: Multi-stage build for optimized image size
  - Builder stage: Compiles dependencies and installs packages
  - Production stage: Minimal runtime image with only necessary files
  - Python 3.11 slim base image
  - Health check endpoint integration
  - Proper Python environment variables (unbuffered, no bytecode)

- docker-compose.yml: Complete orchestration setup
  - Service configuration with restart policy
  - Port mapping (8000:8000)
  - Environment variable passthrough
  - Health check configuration
  - Isolated network
  - Ready for production deployment

- .dockerignore: Optimized build context
  - Excludes Python cache, virtual environments, IDE files
  - Excludes tests and documentation
  - Reduces image size and build time

- .env.docker.example: Docker-specific environment template
  - All required Gitea configuration
  - Optional authentication settings
  - Optional tool filtering settings

Deployment:
1. Copy .env.docker.example to .env
2. Fill in Gitea credentials
3. Run: docker-compose up -d
4. Access at http://localhost:8000

This infrastructure enables easy deployment to any Docker-compatible environment (local, cloud, Kubernetes).

Closes #15

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-03 16:10:06 -05:00
parent 3d1fd2e2a6
commit d21f85545b
4 changed files with 183 additions and 0 deletions

43
docker-compose.yml Normal file
View File

@@ -0,0 +1,43 @@
version: '3.8'
services:
gitea-mcp-wrapper:
build:
context: .
dockerfile: Dockerfile
image: gitea-mcp-wrapper:latest
container_name: gitea-mcp-wrapper
restart: unless-stopped
ports:
- "8000:8000"
environment:
# Gitea Configuration
- GITEA_URL=${GITEA_URL}
- GITEA_TOKEN=${GITEA_TOKEN}
- GITEA_OWNER=${GITEA_OWNER}
- GITEA_REPO=${GITEA_REPO}
# HTTP Server Configuration
- HTTP_HOST=0.0.0.0
- HTTP_PORT=8000
# Authentication (Optional)
- AUTH_TOKEN=${AUTH_TOKEN:-}
# Tool Filtering (Optional)
- ENABLED_TOOLS=${ENABLED_TOOLS:-}
- DISABLED_TOOLS=${DISABLED_TOOLS:-}
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health').read()"]
interval: 30s
timeout: 3s
retries: 3
start_period: 5s
networks:
- gitea-mcp-network
networks:
gitea-mcp-network:
driver: bridge