| # Lean server image for the online demo (no PySide6 / pywebview / pyvista — | |
| # the web server never imports them). Runs the same FastAPI app + web UI. | |
| # Portable: the same image runs on Hugging Face Spaces, Render, Fly.io, Cloud Run… | |
| FROM python:3.12-slim | |
| WORKDIR /app | |
| COPY . /app | |
| # Only the server's runtime deps, then the package itself without its (desktop) deps. | |
| RUN pip install --no-cache-dir \ | |
| numpy scipy "scikit-learn>=1.3" laspy plyfile pyyaml fastapi "uvicorn[standard]" \ | |
| && pip install --no-cache-dir --no-deps . \ | |
| && python examples/make_sample.py | |
| # Hugging Face Spaces sets PORT=7860; default for local runs too. | |
| ENV PORT=7860 | |
| EXPOSE 7860 | |
| CMD ["sh", "-c", "toaster-web examples/sample.bin --host 0.0.0.0 --port ${PORT}"] | |