# Stage 1: Build stage with development tools
# Use latest Python 3.12 for better security patches
FROM python:3.12-slim-bookworm AS builder
# Update packages and install build dependencies with security updates
RUN apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends \
build-essential \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Zet de werkdirectory. Alle volgende commando's worden hier uitgevoerd.
WORKDIR /app
# Kopieer eerst de dependency-definities.
# Door dit apart te doen, kan Docker deze laag cachen als de dependencies niet veranderen.
COPY pyproject.toml README.md ./
# Upgrade pip and install latest secure versions of build tools
RUN pip install --no-cache-dir --upgrade \
pip>=24.0 \
setuptools>=75.0.0 \
wheel>=0.44.0
# Installeer de dependencies van het project.
# Dit installeert de packages in het systeem-site-packages, wat schoner is voor de volgende fase.
RUN pip install --no-cache-dir .
# Kopieer nu de rest van de applicatiecode.
COPY . .
# Stage 2: Production runtime image
FROM python:3.12-slim-bookworm AS runtime
# Maak een niet-root gebruiker aan voor extra veiligheid.
RUN useradd --create-home --shell /bin/bash --uid 1000 unimus
# Zet de werkdirectory in de home-directory van de nieuwe gebruiker.
WORKDIR /home/unimus/app
# Kopieer de geïnstalleerde packages én de benodigde applicatiecode van de builder-fase.
# Dit is de essentie van een multi-stage build: alleen het resultaat wordt meegenomen.
COPY --from=builder --chown=unimus:unimus /app /home/unimus/app
COPY --from=builder --chown=unimus:unimus /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages
COPY --from=builder --chown=unimus:unimus /usr/local/bin /usr/local/bin
# Install only essential runtime dependencies with security updates
RUN apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends \
curl \
ca-certificates \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Schakel over naar de niet-root gebruiker.
USER unimus
# Exposeer de poort waarop de applicatie draait.
EXPOSE 8080
# Configureer de health check. Deze is correct.
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
CMD curl -f http://localhost:8080/readyz || exit 1
# Zet de environment variabelen.
ENV PATH="/home/unimus/.local/bin:${PATH}"
ENV PYTHONUNBUFFERED=1
# Het commando om de server te starten.
CMD ["python", "server.py"]
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Deployment-Team/unimus-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server