| 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 |
|
|
| |
| |
| |
| CMD ["python", "-m", "pulse_physiology_env.server.app", "--port", "8000"] |
|
|