chroma-core / chroma

the AI-native open-source embedding database
https://www.trychroma.com/
Apache License 2.0
14.82k stars 1.24k forks source link

exec /docker_entrypoint.sh: no such file or directory[Install issue]: #1796

Open crystal-yxj opened 7 months ago

crystal-yxj commented 7 months ago

What happened?

exec /docker_entrypoint.sh: no such file or directory image

Versions

windows10

Relevant log output

No response

tazarov commented 7 months ago

@crystal-yxj, do you mind sharing the command you use to create the container? Also which version of Chroma are you usign?

a868111817 commented 6 months ago

I have same problem... Does anyone solve this problem?

git clone https://github.com/chroma-core/chroma cd chroma docker compose up --build

Versions windows10

jaycooley commented 6 months ago

Yes, same issue here

a868111817 commented 6 months ago

Yes, same issue here

Yes, I encountered the same issue as well. It took me about two days to find the solution... HaHa

The reason for the issue varies between Windows and UNIX systems.

Therefore, you will need to modify the Dockerfile from the original repository

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 /chroma
WORKDIR /chroma

COPY --from=builder /install /usr/local
COPY ./bin/docker_entrypoint.sh /docker_entrypoint.sh
COPY ./ /chroma

RUN apt-get update --fix-missing && apt-get install -y curl && \
    chmod +x /docker_entrypoint.sh && \
    rm -rf /var/lib/apt/lists/*

ENV CHROMA_HOST_ADDR "0.0.0.0"
ENV CHROMA_HOST_PORT 8000
ENV CHROMA_WORKERS 1
ENV CHROMA_LOG_CONFIG "chromadb/log_config.yml"
ENV CHROMA_TIMEOUT_KEEP_ALIVE 30

EXPOSE 8000

ENTRYPOINT ["/bin/bash", "-c", "uvicorn chromadb.app:app --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}"]

Reference:https://stackoverflow.com/questions/76291703/how-can-i-troubleshoot-required-file-not-found-error-when-running-postgres-doc"

tazarov commented 6 months ago

This is interesting, as all Chroma tests also run on Windows GH runner in docker, and we have not observed this particular problem. Reading the SO issue that @a868111817 shared, I get the feeling that the issue might be related to how the bash script is formatted.

@a868111817, does this work for you as well:

ENTRYPOINT ["/bin/bash", "-c","/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}"]
a868111817 commented 6 months ago

This is interesting, as all Chroma tests also run on Windows GH runner in docker, and we have not observed this particular problem. Reading the SO issue that @a868111817 shared, I get the feeling that the issue might be related to how the bash script is formatted.

@a868111817, does this work for you as well:

ENTRYPOINT ["/bin/bash", "-c","/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}"]

Thank you for your response. I've tried your command, but I still believe the issue persists.

image

dmytrostruk commented 5 months ago

Same issue here.

Therefore, you will need to modify the Dockerfile from the original repository

@a868111817 Thanks for your fix.

tazarov commented 4 months ago

@a868111817, I noticed you are running the server:v1.0 image. How do you build the image?

farrar142 commented 3 months ago

I changed newline character in bin/docker_entrypoint.sh from crlf to lf and it worked.

CrisAlejo26 commented 1 month ago

I also had the same problem in Windows 11, it was solved by leaving only this line in the Dockerfile:

ENTRYPOINT ["/bin/bash", "-c", "uvicorn chromadb.app:app --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}"]

Comment this line:

# ENTRYPOINT ["/bin/bash", "-c","/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} "]