FROM python:3.11-slim-bookworm AS builder ARG REBUILD_HNSWLIB RUN apt-get update --fix-missing && apt-get install -y --fix-missing \ build-essential \ gcc \ g++ \ cmake \ autoconf && \ rm -rf /var/lib/apt/lists/* && \ mkdir /install WORKDIR /install COPY ./requirements.txt requirements.txt RUN pip install --no-cache-dir --upgrade --prefix="/install" -r requirements.txt RUN if [ "$REBUILD_HNSWLIB" = "true" ]; then pip install --no-binary :all: --force-reinstall --no-cache-dir --prefix="/install" chroma-hnswlib; fi FROM python:3.11-slim-bookworm AS final RUN mkdir -p /chroma RUN chmod 777 /chroma WORKDIR /chroma COPY --from=builder /install /usr/local COPY ./bin/docker_entrypoint.sh /docker_entrypoint.sh COPY ./ /chroma RUN chmod +x /docker_entrypoint.sh ENV CHROMA_HOST_ADDR "0.0.0.0" ENV CHROMA_HOST_PORT 7860 ENV CHROMA_WORKERS 1 ENV CHROMA_LOG_CONFIG "chromadb/log_config.yml" ENV CHROMA_TIMEOUT_KEEP_ALIVE 30 EXPOSE 7860 ENTRYPOINT ["/docker_entrypoint.sh"] CMD [ "--workers ${CHROMA_WORKERS} --host ${CHROMA_HOST_ADDR} --port ${CHROMA_HOST_PORT} --proxy-headers --log-config ${CHROMA_LOG_CONFIG} --timeout-keep-alive ${CHROMA_TIMEOUT_KEEP_ALIVE}"]