mirror of
https://github.com/tiennm99/litellm.git
synced 2026-06-18 03:31:23 +00:00
8b0e3c14ff
The Admin UI is already built before packaging, so the second invocation of docker/build_admin_ui.sh after PyJWT adjustments was unnecessary. Removing it speeds up the builder stage, reduces cache invalidation, and doesn’t change the resulting wheel or runtime image.
82 lines
2.1 KiB
Docker
82 lines
2.1 KiB
Docker
# Base image for building
|
|
ARG LITELLM_BUILD_IMAGE=cgr.dev/chainguard/python:latest-dev
|
|
|
|
# Runtime image
|
|
ARG LITELLM_RUNTIME_IMAGE=cgr.dev/chainguard/python:latest-dev
|
|
# Builder stage
|
|
FROM $LITELLM_BUILD_IMAGE AS builder
|
|
|
|
# Set the working directory to /app
|
|
WORKDIR /app
|
|
|
|
USER root
|
|
|
|
# Install build dependencies
|
|
RUN apk add --no-cache gcc python3-dev openssl openssl-dev
|
|
|
|
|
|
RUN pip install --upgrade pip && \
|
|
pip install build
|
|
|
|
# Copy the current directory contents into the container at /app
|
|
COPY . .
|
|
|
|
# Build Admin UI
|
|
RUN chmod +x docker/build_admin_ui.sh && ./docker/build_admin_ui.sh
|
|
|
|
# Build the package
|
|
RUN rm -rf dist/* && python -m build
|
|
|
|
# There should be only one wheel file now, assume the build only creates one
|
|
RUN ls -1 dist/*.whl | head -1
|
|
|
|
# Install the package
|
|
RUN pip install dist/*.whl
|
|
|
|
# install dependencies as wheels
|
|
RUN pip wheel --no-cache-dir --wheel-dir=/wheels/ -r requirements.txt
|
|
|
|
# ensure pyjwt is used, not jwt
|
|
RUN pip uninstall jwt -y
|
|
RUN pip uninstall PyJWT -y
|
|
RUN pip install PyJWT==2.9.0 --no-cache-dir
|
|
|
|
# Runtime stage
|
|
FROM $LITELLM_RUNTIME_IMAGE AS runtime
|
|
|
|
# Ensure runtime stage runs as root
|
|
USER root
|
|
|
|
# Install runtime dependencies
|
|
RUN apk add --no-cache openssl tzdata
|
|
|
|
WORKDIR /app
|
|
# Copy the current directory contents into the container at /app
|
|
COPY . .
|
|
RUN ls -la /app
|
|
|
|
# Copy the built wheel from the builder stage to the runtime stage; assumes only one wheel file is present
|
|
COPY --from=builder /app/dist/*.whl .
|
|
COPY --from=builder /wheels/ /wheels/
|
|
|
|
# Install the built wheel using pip; again using a wildcard if it's the only file
|
|
RUN pip install *.whl /wheels/* --no-index --find-links=/wheels/ && rm -f *.whl && rm -rf /wheels
|
|
|
|
# Install semantic_router and aurelio-sdk using script
|
|
RUN chmod +x docker/install_auto_router.sh && ./docker/install_auto_router.sh
|
|
|
|
# Generate prisma client
|
|
RUN prisma generate
|
|
RUN chmod +x docker/entrypoint.sh
|
|
RUN chmod +x docker/prod_entrypoint.sh
|
|
|
|
EXPOSE 4000/tcp
|
|
|
|
RUN apk add --no-cache supervisor
|
|
COPY docker/supervisord.conf /etc/supervisord.conf
|
|
|
|
ENTRYPOINT ["docker/prod_entrypoint.sh"]
|
|
|
|
# Append "--detailed_debug" to the end of CMD to view detailed debug logs
|
|
CMD ["--port", "4000"]
|