Spaces:
Paused
Paused
| # Hugging Face Spaces (Docker SDK) build. | |
| # Place this file as ./Dockerfile at the Space repo root, | |
| # alongside shared/ and backend/ (build context = repo root). | |
| FROM node:22-slim | |
| SHELL ["/bin/bash", "-o", "pipefail", "-c"] | |
| # hadolint ignore=DL3008 | |
| RUN set -ex; \ | |
| export DEBIAN_FRONTEND=noninteractive; \ | |
| apt-get update; \ | |
| apt-get install -y --no-install-recommends \ | |
| python3 python3-pip python3-full ffmpeg curl unzip; \ | |
| rm -rf /var/lib/apt/lists/* | |
| # yt-dlp toolchain in a world-readable venv | |
| RUN python3 -m venv /opt/tool-venv \ | |
| && /opt/tool-venv/bin/pip install --no-cache-dir --upgrade pip \ | |
| && /opt/tool-venv/bin/pip install --no-cache-dir --upgrade --pre \ | |
| yt-dlp kaggle yt-dlp-getpot-wpc | |
| # reuse node user (uid 1000) hf expects | |
| RUN mkdir -p /home/node/app && chown node:node /home/node/app | |
| USER node | |
| ENV HOME=/home/node \ | |
| PATH=/home/node/.deno/bin:/opt/tool-venv/bin:/home/node/.local/bin:$PATH | |
| WORKDIR $HOME/app | |
| RUN curl -fsSL https://deno.land/install.sh | sh | |
| # shared has its own deps (zod) the schemas need | |
| COPY --chown=node:node shared/ ./shared/ | |
| RUN cd shared && npm ci | |
| COPY --chown=node:node backend/package*.json ./backend/ | |
| WORKDIR $HOME/app/backend | |
| RUN npm ci | |
| COPY --chown=node:node backend/ ./ | |
| RUN npx tsc && mkdir -p temp | |
| ENV PORT=7860 \ | |
| API_ONLY=true \ | |
| NODE_ENV=production | |
| EXPOSE 7860 | |
| CMD ["node", "--import", "./dist/backend/src/instrument.js", "dist/backend/src/app.js"] | |