# NOT used by the Hugging Face Space. # # The Space is `sdk: static` (see README.md's front matter), because creating a # Docker Space requires a paid Hugging Face plan. This file exists for two # reasons: # # 1. running upstream unmodified in a container locally, where app.py serves # the real API and the browser overlay is not involved at all; # 2. as the starting point if this ever moves to a paid plan. # # Read the caveat before reaching for reason 2: a Space's filesystem is # ephemeral. Upstream stores documents in uploads/ and review records in # data/reviews.json, so a restarted container starts empty. Making the Space a # real review system needs a persistent volume or an external store, not just # this Dockerfile. # # Upstream needs no third-party packages, so there is nothing to install. FROM python:3.13-slim # Hugging Face Spaces run as uid 1000 and expect the app on port 7860. RUN useradd --create-home --uid 1000 app USER app WORKDIR /home/app # The vendored upstream mirror, exactly as sync-upstream.ps1 left it. Nothing # from overlay/ is copied: in a container the real server answers /api/, and the # browser-side reimplementation would be a second, conflicting answer. COPY --chown=app:app app/ ./ # Written at runtime by app.py's ensure_storage(), and ephemeral in a Space. RUN mkdir -p data uploads EXPOSE 7860 # app.py's run() defaults to 127.0.0.1:4173, which is unreachable from outside a # container, so host and port are passed explicitly. sync-upstream.ps1 warns if # upstream ever changes that signature. CMD ["python", "-c", "import app; app.run('0.0.0.0', 7860)"]