generated from personal-projects/leo-claude-mktplace
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>
55 lines
1.2 KiB
Docker
55 lines
1.2 KiB
Docker
# Gitea HTTP MCP Wrapper Dockerfile
|
|
# Multi-stage build for optimized image size
|
|
|
|
FROM python:3.11-slim as builder
|
|
|
|
# Set working directory
|
|
WORKDIR /build
|
|
|
|
# Install build dependencies
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
gcc \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Copy requirements first for better caching
|
|
COPY requirements.txt .
|
|
RUN pip install --user --no-cache-dir -r requirements.txt
|
|
|
|
# Copy source code
|
|
COPY pyproject.toml .
|
|
COPY src/ src/
|
|
|
|
# Install package
|
|
RUN pip install --user --no-cache-dir -e .
|
|
|
|
# Production stage
|
|
FROM python:3.11-slim
|
|
|
|
# Set working directory
|
|
WORKDIR /app
|
|
|
|
# Copy installed packages from builder
|
|
COPY --from=builder /root/.local /root/.local
|
|
|
|
# Copy source code
|
|
COPY src/ src/
|
|
COPY pyproject.toml .
|
|
|
|
# Make sure scripts in .local are usable
|
|
ENV PATH=/root/.local/bin:$PATH
|
|
|
|
# Set Python environment variables
|
|
ENV PYTHONUNBUFFERED=1
|
|
ENV PYTHONDONTWRITEBYTECODE=1
|
|
|
|
# Expose default port
|
|
EXPOSE 8000
|
|
|
|
# Health check
|
|
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
|
CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:8000/health').read()"
|
|
|
|
# Run the HTTP MCP server
|
|
CMD ["gitea-http-wrapper"]
|