Algorithmic-Governance-Foundation/deep-reservoir
0
1# This is the Dockerfile used for the Hugging Face Space2 3# Install uv4FROM python:3.12-slim5COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/6 7# Change the working directory to the `app` directory8WORKDIR /app9 10# For devmode11RUN useradd -m -u 1000 user12 13# Install dependencies14RUN --mount=type=cache,target=/root/.cache/uv \15 --mount=type=bind,source=uv.lock,target=uv.lock \16 --mount=type=bind,source=pyproject.toml,target=pyproject.toml \17 uv sync --locked --no-install-project18 19# Copy the project into the image20ADD . /app21 22# Change ownership to user and create cache directory23RUN chown -R user:user /app && \24 mkdir -p /home/user/.cache/uv && \25 chown -R user:user /home/user/.cache26 27# Switch to user28USER user29 30# Sync the project31RUN uv sync --locked32 33# This is so jank but I can't think of an easier way34# References:35# https://huggingface.co/docs/hub/en/spaces-sdks-docker#buildtime36# https://docs.astral.sh/uv/concepts/configuration-files/#env37RUN --mount=type=secret,id=PERPLEXITY_API_KEY,mode=0444,required=true \38 --mount=type=secret,id=OPENAI_API_KEY,mode=0444,required=true \39 --mount=type=secret,id=GRADIO_PASSWORD,mode=0444,required=true \40 echo "PERPLEXITY_API_KEY=$(cat /run/secrets/PERPLEXITY_API_KEY)" > .env && \41 echo "OPENAI_API_KEY=$(cat /run/secrets/OPENAI_API_KEY)" >> .env && \42 echo "GRADIO_PASSWORD=$(cat /run/secrets/GRADIO_PASSWORD)" >> .env43 44ENV GRADIO_SERVER_NAME="0.0.0.0"45 46EXPOSE 786047 48CMD ["uv", "run", "gradio-reservoir"]