Dockerfileโข916 B
FROM python:3.11-slim
# Set environment variables
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
UV_CACHE_DIR=/tmp/uv-cache
# Install system dependencies
RUN apt-get update && apt-get install -y \
build-essential \
curl \
&& rm -rf /var/lib/apt/lists/*
# Install uv
RUN pip install uv
# Set work directory
WORKDIR /app
# Copy dependency files
COPY pyproject.toml ./
COPY uv.lock ./
# Install dependencies using uv
RUN uv sync --frozen
# Copy source code
COPY src/ ./src/
COPY tests/ ./tests/
# Create a non-root user
RUN useradd --create-home --shell /bin/bash app \
&& chown -R app:app /app
USER app
# Expose port (if your MCP server needs to listen on a port)
EXPOSE 8000
# Health check
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
CMD python -c "import sys; sys.exit(0)"
# Run the server
CMD ["uv", "run", "python", "-m", "mcp_server.main"]