Files
yargi-mcp/Dockerfile
T
2025-06-26 16:22:27 +03:00

86 lines
1.8 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Multi-stage Dockerfile for Yargı MCP Server
# Build stage
FROM python:3.12-slim as builder
# Install build dependencies
RUN apt-get update && apt-get install -y \
gcc \
g++ \
git \
&& rm -rf /var/lib/apt/lists/*
# Set working directory
WORKDIR /app
# Copy requirements first for better caching
COPY pyproject.toml ./
COPY README.md ./
# Install dependencies
RUN pip install --no-cache-dir uv && \
uv pip install --system --no-cache-dir .
# Runtime stage
FROM python:3.12-slim
# Install runtime dependencies
RUN apt-get update && apt-get install -y \
# Required for Playwright
libnss3 \
libnspr4 \
libatk1.0-0 \
libatk-bridge2.0-0 \
libcups2 \
libdrm2 \
libdbus-1-3 \
libatspi2.0-0 \
libx11-6 \
libxcomposite1 \
libxdamage1 \
libxext6 \
libxfixes3 \
libxrandr2 \
libgbm1 \
libxcb1 \
libxkbcommon0 \
libpango-1.0-0 \
libcairo2 \
libasound2 \
&& rm -rf /var/lib/apt/lists/*
# Create non-root user
RUN useradd -m -u 1000 mcp && \
mkdir -p /app && \
chown -R mcp:mcp /app
# Set working directory
WORKDIR /app
# Copy from builder
COPY --from=builder /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages
COPY --from=builder /usr/local/bin /usr/local/bin
# Copy application code
COPY --chown=mcp:mcp . .
# Install Playwright browsers
RUN playwright install chromium
# Switch to non-root user
USER mcp
# Expose port
EXPOSE 8000
# Set environment variables
ENV PYTHONUNBUFFERED=1
ENV HOST=0.0.0.0
ENV PORT=8000
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \
CMD python -c "import httpx; httpx.get('http://localhost:8000/health').raise_for_status()"
# Run the ASGI server
CMD ["uvicorn", "asgi_app:app", "--host", "0.0.0.0", "--port", "8000"]