GAIR-lima / Dockerfile
nsthorat-lilac's picture
Push to HF space
acec92d verified
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"]