Spaces:
Sleeping
Sleeping
| FROM python:3.11-slim-bookworm | |
| # System dependencies | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| build-essential \ | |
| pkg-config \ | |
| git \ | |
| autoconf \ | |
| automake \ | |
| libtool \ | |
| zlib1g-dev \ | |
| libbz2-dev \ | |
| liblzma-dev \ | |
| libhdf5-dev \ | |
| libhts-dev \ | |
| libomp-dev \ | |
| bowtie2 \ | |
| samtools \ | |
| fontconfig \ | |
| fonts-urw-base35 \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Debian bookworm ships cmake 3.25, cmuts needs 3.29+ | |
| RUN pip install --no-cache-dir cmake | |
| # Clone and build cmuts at a pinned commit. | |
| # This SHA is automatically updated by the "Sync HF Space" workflow in | |
| # github.com/hmblair/cmuts on every push to master — do not pin manually. | |
| ARG CMUTS_SHA=4bb0219121b1f1e4f102fab83eff1e55e73da920 | |
| RUN git clone --recurse-submodules https://github.com/hmblair/cmuts.git /cmuts && \ | |
| cd /cmuts && git checkout $CMUTS_SHA | |
| WORKDIR /cmuts | |
| RUN ./configure | |
| # Make htscodecs libs available | |
| ENV PATH="/cmuts/bin:$PATH" | |
| RUN cp /cmuts/htscodecs/lib/*.so* /usr/local/lib/ && ldconfig | |
| # Patch Helvetica -> Nimbus Sans (available from fonts-urw-base35) | |
| RUN sed -i 's/FONT_FAMILY = "Helvetica"/FONT_FAMILY = "Nimbus Sans"/' \ | |
| /cmuts/src/python/cmuts/visualize/plotly.py && \ | |
| fc-cache -f | |
| # Install Python web deps (plotly + h5py come in via cmuts) | |
| RUN pip install --no-cache-dir \ | |
| "fastapi>=0.110" \ | |
| "uvicorn[standard]>=0.27" \ | |
| "jinja2>=3.1" \ | |
| "python-multipart>=0.0.9" | |
| # Clean up build artifacts | |
| RUN rm -rf /cmuts/build | |
| # Copy the app, templates, static assets, and example data | |
| COPY app.py pipeline.py /app/ | |
| COPY templates /app/templates | |
| COPY static /app/static | |
| COPY examples /app/examples | |
| WORKDIR /app | |
| EXPOSE 7860 | |
| RUN useradd -m -u 1000 user | |
| USER user | |
| ENV HOME=/home/user PATH="/cmuts/bin:/home/user/.local/bin:$PATH" | |
| CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860", "--workers", "1"] | |