mirror of
https://github.com/tiennm99/litellm.git
synced 2026-06-21 07:45:01 +00:00
22ae1628e1
The litellm-database Docker image was missing the libsndfile system library, which is required by the soundfile Python package for audio file processing. This caused failures when using audio transcription endpoints that attempt to calculate audio duration. This adds libsndfile to the runtime dependencies in Dockerfile.database, consistent with Dockerfile.alpine which already includes this library.
93 lines
2.4 KiB
Docker
93 lines
2.4 KiB
Docker
# Base image for building
|
|
ARG LITELLM_BUILD_IMAGE=cgr.dev/chainguard/wolfi-base
|
|
|
|
# Runtime image
|
|
ARG LITELLM_RUNTIME_IMAGE=cgr.dev/chainguard/wolfi-base
|
|
# 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 \
|
|
bash \
|
|
gcc \
|
|
py3-pip \
|
|
python3 \
|
|
python3-dev \
|
|
openssl \
|
|
openssl-dev
|
|
|
|
RUN python -m 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
|
|
|
|
# Runtime stage
|
|
FROM $LITELLM_RUNTIME_IMAGE AS runtime
|
|
|
|
# Ensure runtime stage runs as root
|
|
USER root
|
|
|
|
# Install runtime dependencies
|
|
RUN apk add --no-cache bash openssl tzdata nodejs npm python3 py3-pip libsndfile
|
|
|
|
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
|
|
|
|
# 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
|
|
|
|
# Build Admin UI
|
|
RUN chmod +x docker/build_admin_ui.sh && ./docker/build_admin_ui.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
|
|
|
|
# # Set your entrypoint and command
|
|
|
|
|
|
ENTRYPOINT ["docker/prod_entrypoint.sh"]
|
|
|
|
# Append "--detailed_debug" to the end of CMD to view detailed debug logs
|
|
# CMD ["--port", "4000", "--detailed_debug"]
|
|
CMD ["--port", "4000"]
|