roboeval / Dockerfile
rubenodechua's picture
Initial deploy: Phase 5 dashboard from RDechua/roboeval@ba0a819
9859263
Raw
History Blame Contribute Delete
1.4 kB
# Hugging Face Spaces Docker SDK target.
#
# Build context is the REPO ROOT, not analysis/dashboard/. HF Spaces
# clones the repo and runs `docker build` from the root with the path
# to this Dockerfile, so the COPY paths below are repo-relative.
FROM python:3.11-slim
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=1
WORKDIR /app
# Project metadata, library code, and dashboard skeleton.
COPY pyproject.toml README.md /app/
COPY roboeval /app/roboeval
COPY analysis/dashboard /app/analysis/dashboard
# The only data file the runtime dashboard reads — schema v2 bundles
# cells + ablation + Welch's t-tests inline (built by
# scripts/build_headline_json.py from the gitignored auto_labels at
# build time so the runtime image stays self-contained).
COPY data/headline.json /app/data/headline.json
RUN pip install --upgrade pip \
&& pip install --no-deps -e . \
&& pip install -r analysis/dashboard/requirements.txt
# `--no-deps` skips the full pyproject ML stack (lerobot, mujoco, torch,
# sb3, etc.) — none of which the dashboard imports at runtime. The
# `roboeval.dashboard` subpackage only needs plotly + dash + dbc, which
# requirements.txt installs explicitly.
ENV PYTHONPATH=/app
EXPOSE 7860
CMD ["gunicorn", "--chdir", "analysis/dashboard", \
"--bind", "0.0.0.0:7860", \
"--workers", "2", \
"--timeout", "60", \
"app:server"]