Spaces:
Configuration error
Configuration error
# Base image for building | |
ARG LITELLM_BUILD_IMAGE=python:3.11-slim | |
# Runtime image | |
ARG LITELLM_RUNTIME_IMAGE=python:3.11-slim | |
# Builder stage | |
FROM $LITELLM_BUILD_IMAGE AS builder | |
# Set the working directory to /app | |
WORKDIR /app | |
USER root | |
# Install build dependencies in one layer | |
RUN apt-get update && apt-get install -y --no-install-recommends \ | |
gcc \ | |
python3-dev \ | |
libssl-dev \ | |
pkg-config \ | |
&& rm -rf /var/lib/apt/lists/* \ | |
&& pip install --upgrade pip build | |
# Copy requirements first for better layer caching | |
COPY requirements.txt . | |
# Install Python dependencies with cache mount for faster rebuilds | |
RUN --mount=type=cache,target=/root/.cache/pip \ | |
pip wheel --no-cache-dir --wheel-dir=/wheels/ -r requirements.txt | |
# Fix JWT dependency conflicts early | |
RUN pip uninstall jwt -y || true && \ | |
pip uninstall PyJWT -y || true && \ | |
pip install PyJWT==2.9.0 --no-cache-dir | |
# Copy only necessary files for build | |
COPY pyproject.toml README.md schema.prisma poetry.lock ./ | |
COPY litellm/ ./litellm/ | |
COPY enterprise/ ./enterprise/ | |
COPY docker/ ./docker/ | |
# Build Admin UI once | |
RUN chmod +x docker/build_admin_ui.sh && ./docker/build_admin_ui.sh | |
# Build the package | |
RUN rm -rf dist/* && python -m build | |
# Install the built package | |
RUN pip install dist/*.whl | |
# Runtime stage | |
FROM $LITELLM_RUNTIME_IMAGE AS runtime | |
# Ensure runtime stage runs as root | |
USER root | |
# Install only runtime dependencies | |
RUN apt-get update && apt-get install -y --no-install-recommends \ | |
libssl3 \ | |
&& rm -rf /var/lib/apt/lists/* | |
WORKDIR /app | |
# Copy only necessary runtime files | |
COPY docker/entrypoint.sh docker/prod_entrypoint.sh ./docker/ | |
COPY litellm/ ./litellm/ | |
COPY pyproject.toml README.md schema.prisma poetry.lock ./ | |
# Copy pre-built wheels and install everything at once | |
COPY --from=builder /wheels/ /wheels/ | |
COPY --from=builder /app/dist/*.whl . | |
# Install all dependencies in one step with no-cache for smaller image | |
RUN pip install --no-cache-dir *.whl /wheels/* --no-index --find-links=/wheels/ && \ | |
rm -f *.whl && \ | |
rm -rf /wheels | |
# Generate prisma client and set permissions | |
RUN prisma generate && \ | |
chmod +x docker/entrypoint.sh docker/prod_entrypoint.sh | |
EXPOSE 4000/tcp | |
ENTRYPOINT ["docker/prod_entrypoint.sh"] | |
# Append "--detailed_debug" to the end of CMD to view detailed debug logs | |
CMD ["--port", "4000"] |