FROM ubuntu:22.04 # Install Node.js 20 - https://github.com/nodesource/distributions?tab=readme-ov-file#installation-instructions-deb # And python3 RUN apt update \ && apt install -y curl python3 python3-pip \ && rm -rf /var/lib/apt/lists/* RUN curl -fsSL https://deb.nodesource.com/setup_20.x -o nodesource_setup.sh \ && bash nodesource_setup.sh \ && apt update \ && apt install -y nodejs \ && rm -rf /var/lib/apt/lists/* \ && rm nodesource_setup.sh RUN pip install --upgrade "huggingface_hub[cli]" # Build the app WORKDIR /usr/app COPY ./ /usr/app RUN npm install RUN npm run sources && npm run build # The site space name must be passed as an environment variable # https://huggingface.co./docs/hub/spaces-sdks-docker#buildtime ARG STATIC_SPACE # The Hugging Face token must be passed as a secret (https://huggingface.co./docs/hub/spaces-sdks-docker#buildtime) # 1. get README.md from the site space RUN --mount=type=secret,id=HF_TOKEN,mode=0444,required=true \ huggingface-cli download --token=$(cat /run/secrets/HF_TOKEN) --repo-type=space --local-dir=/build $STATIC_SPACE README.md && rm -rf /build/.cache # 2. upload the new build to the site space, including README.md RUN --mount=type=secret,id=HF_TOKEN,mode=0444,required=true \ huggingface-cli upload --token=$(cat /run/secrets/HF_TOKEN) --repo-type=space $STATIC_SPACE /build . --delete "*" # Halt execution because the code space is not meant to run. CMD ["true"]