generated from personal-projects/leo-claude-mktplace
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:
54
Dockerfile
Normal file
54
Dockerfile
Normal file
@@ -0,0 +1,54 @@
|
||||
# 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"]
|
||||
Reference in New Issue
Block a user