SimpleDocReview / Dockerfile
Eric Putnam
feat: deploy simpledocreview as a browser-only static space
3d968d9
Raw History Blame Contribute Delete
1.62 kB
# 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)"]