Pulse_ER_env / server /Dockerfile
KChad's picture
Add all docs_assets image assets to Hugging Face Space snapshot
9b1756a
FROM python:3.12-slim AS pulse-builder
ENV DEBIAN_FRONTEND=noninteractive
WORKDIR /build
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
clang \
cmake \
curl \
git \
libc++-dev \
libc++abi-dev \
libomp-dev \
wget && \
rm -rf /var/lib/apt/lists/*
COPY engine /source/engine
RUN python -m pip install --no-cache-dir --upgrade pip && \
python -m pip install --no-cache-dir -r /source/engine/requirements.txt
RUN cmake \
-S /source/engine \
-B /build/pulse \
-DPulse_PYTHON_API=ON \
-DPulse_JAVA_API=OFF \
-DPulse_CSHARP_API=OFF \
-DPulse_DOWNLOAD_BASELINES=OFF \
-DCMAKE_INSTALL_PREFIX=/pulse \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_CXX_FLAGS=-stdlib=libc++ && \
cmake --build /build/pulse --parallel 4 && \
test -d /pulse/bin && \
test -d /pulse/python
FROM python:3.12-slim
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PULSE_INSTALL_DIR=/app/engine-build/install \
PYTHONPATH=/app
WORKDIR /app
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
cmake \
curl \
libc++1 \
libc++abi1 \
libgomp1 \
libssl-dev && \
rm -rf /var/lib/apt/lists/*
COPY server/requirements.txt /app/requirements.txt
COPY engine/requirements.txt /app/engine-requirements.txt
RUN python -m pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r /app/requirements.txt -r /app/engine-requirements.txt protobuf==5.29.2
COPY . /app
COPY --from=pulse-builder /pulse /app/engine-build/install
COPY engine-build/install/bin/states /app/engine-build/install/bin/states
EXPOSE 8000
HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=5 \
CMD curl -f http://localhost:8000/health || exit 1
# This image builds a Linux Pulse install from source, so it can run on
# remote Linux workers such as Hugging Face Jobs without any host-mounted
# engine directory.
CMD ["python", "-m", "pulse_physiology_env.server.app", "--port", "8000"]