ARG UV_IMAGE=ghcr.io/astral-sh/uv:0.10.9@sha256:10902f58a1606787602f303954cea099626a4adb02acbac4c69920fe9d278f82 FROM $UV_IMAGE AS uvbin FROM python:3.13-slim@sha256:739e7213785e88c0f702dcdc12c0973afcbd606dbf021a589cab77d6b00b579d ARG LITELLM_VERSION=1.83.0 WORKDIR /app COPY --from=uvbin /uv /usr/local/bin/uv COPY --from=uvbin /uvx /usr/local/bin/uvx RUN apt-get update && \ apt-get install -y --no-install-recommends gcc libffi-dev nodejs npm && \ rm -rf /var/lib/apt/lists/* ENV UV_PROJECT_ENVIRONMENT=/app/.venv \ UV_LINK_MODE=copy \ PATH="/app/.venv/bin:${PATH}" COPY schema.prisma . # This image is specifically for validating/installing the published PyPI # artifact, not the checked-out source tree. # Keep the moved proxy-runtime packages explicit until the published PyPI # artifact includes that extra; newer releases will simply dedupe these. RUN uv venv --python python && \ uv pip install --python /app/.venv/bin/python \ "litellm[proxy,proxy-runtime]==${LITELLM_VERSION}" \ "google-cloud-aiplatform==1.133.0" \ "google-genai==1.37.0" \ "anthropic[vertex]==0.84.0" \ "grpcio==1.78.0" \ "prometheus-client==0.20.0" \ "langfuse==2.59.7" \ "opentelemetry-api==1.28.0" \ "opentelemetry-sdk==1.28.0" \ "opentelemetry-exporter-otlp==1.28.0" \ "ddtrace==2.19.0" \ "sentry-sdk==2.21.0" \ "mangum==0.17.0" \ "azure-ai-contentsafety==1.0.0" \ "azure-storage-file-datalake==12.20.0" \ "pypdf==6.7.5" \ "llm-sandbox==0.3.31" \ "detect-secrets==1.5.0" \ "prisma==0.11.0" \ "openai==2.24.0" RUN prisma generate --schema=./schema.prisma EXPOSE 4000/tcp ENTRYPOINT ["litellm"] CMD ["--port", "4000"]