FROM python:3.11-slim-bullseye # Allow statements and log messages to immediately appear in the Knative logs ENV PYTHONUNBUFFERED True # Fixes "invalid instruction" runtime error on AMD machines (specifically HF Upgraded CPU Space). ENV HNSWLIB_NO_NATIVE 1 # Adds GCC and other build tools so we can compile hnswlib and other native/C++ deps. RUN apt-get update --fix-missing && apt-get install -y --fix-missing build-essential && \ rm -rf /var/lib/apt/lists/* # See: https://huggingface.co/docs/hub/spaces-sdks-docker#permissions RUN useradd -m -u 1000 user USER user ENV HOME=/home/user \ PATH=/home/user/.local/bin:$PATH # Set the working directory in the container. WORKDIR $HOME/app # Install the dependencies. This will look in ./dist for any wheels that match lilac. If they are # not found, it will use the public pip package. # Pip install lilac[all] and dependencies before trying to install the local image. This allows us # to get cache hits on dependency installations when using a local wheel. When using the public pip # package, the second call will be a no-op. RUN python -m pip install lilac[all] # Install from the local wheel inside ./dist. This will be a no-op if the wheel is not found. COPY --chown=user /dist ./dist/ RUN python -m pip install --find-links=dist --upgrade lilac[all] # Install the huggingface hub, used to download files. RUN pip install huggingface_hub # Copy the README so we can read the datasets from the HuggingFace config. COPY --chown=user README.md . # Copy the license just in case. COPY --chown=user LICENSE . COPY --chown=user docker_start.sh ./ # Make a local data directory for non-persistent storage demos. RUN mkdir -p ./data RUN chown -R user ./data EXPOSE 5432 CMD ["bash", "docker_start.sh"]