| # Dockerfile.rocm | |
| # ProofBridge Liner β AMD MI300X / ROCm 7 variant | |
| # | |
| # Target: DigitalOcean FX-AM7-gpu-mi300x1-192gb (Ubuntu 24.04, ROCm 7 pre-installed) | |
| # | |
| # Strategy: lightweight Node.js 20 image β ROCm libraries are mounted | |
| # from the HOST at /opt/rocm (already installed by the DO marketplace image). | |
| # This avoids pulling the 20+ GB rocm/dev base image and gives access to | |
| # the exact ROCm 7 version the host drivers expect. | |
| # | |
| # Build: | |
| # docker build -f Dockerfile.rocm -t proofbridge-liner:rocm . | |
| # | |
| # Run (with MI300X): | |
| # docker run --rm \ | |
| # --device /dev/kfd \ | |
| # --device /dev/dri \ | |
| # --group-add video \ | |
| # --group-add render \ | |
| # -v /opt/rocm:/opt/rocm:ro \ | |
| # -e ROCM_PATH=/opt/rocm \ | |
| # -e DASHBOARD_PORT=7860 \ | |
| # -p 7860:7860 \ | |
| # proofbridge-liner:rocm | |
| FROM node:20-bookworm-slim | |
| LABEL org.opencontainers.image.title="ProofBridge Liner (MI300X)" | |
| LABEL org.opencontainers.image.description="Ghost-Risk Safety Kernel β AMD Instinct MI300X, 192 GB HBM3" | |
| LABEL rocm.version="7" | |
| LABEL amd.gpu="MI300X" | |
| # ββ System deps needed to call into mounted ROCm libs βββββββββββββ | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| libstdc++6 \ | |
| libnuma1 \ | |
| libelf1 \ | |
| curl \ | |
| ca-certificates \ | |
| && apt-get clean && rm -rf /var/lib/apt/lists/* | |
| WORKDIR /app | |
| # ββ Node deps (production only) βββββββββββββββββββββββββββββββββββ | |
| COPY package.json ./ | |
| RUN npm install --omit=dev | |
| # ββ App source ββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| COPY . . | |
| # ββ Entrypoint: probe GPU, then launch dashboard ββββββββββββββββββ | |
| COPY <<'EOF' /app/entrypoint.sh | |
| #!/bin/sh | |
| set -e | |
| echo "βββββββββββββββββββββββββββββββββββββββββ" | |
| echo "β ProofBridge Liner β MI300X Kernel β" | |
| echo "βββββββββββββββββββββββββββββββββββββββββ" | |
| # Report GPU if ROCm is mounted | |
| if [ -x "${ROCM_PATH:-/opt/rocm}/bin/rocm-smi" ]; then | |
| "${ROCM_PATH}/bin/rocm-smi" --showproductname --showmeminfo vram 2>/dev/null \ | |
| && echo "[rocm] AMD MI300X detected β 192 GB HBM3 available" \ | |
| || echo "[rocm] rocm-smi ran but no GPU reported" | |
| else | |
| echo "[rocm] /opt/rocm not mounted β running CPU-only mode" | |
| fi | |
| exec node dashboard/server.js | |
| EOF | |
| RUN chmod +x /app/entrypoint.sh | |
| # ββ Environment βββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ENV NODE_ENV=production | |
| ENV DASHBOARD_PORT=7860 | |
| ENV DASHBOARD_HOST=0.0.0.0 | |
| # ROCm path (populated at runtime by -v /opt/rocm:/opt/rocm:ro) | |
| ENV ROCM_PATH=/opt/rocm | |
| ENV PATH="${ROCM_PATH}/bin:${PATH}" | |
| ENV LD_LIBRARY_PATH="${ROCM_PATH}/lib:${ROCM_PATH}/lib64:${LD_LIBRARY_PATH:-}" | |
| # MI300X-specific HIP tuning env vars | |
| ENV HIP_VISIBLE_DEVICES=0 | |
| ENV GPU_MAX_HW_QUEUES=8 | |
| ENV HSA_ENABLE_SDMA=0 | |
| EXPOSE 7860 | |
| ENTRYPOINT ["/app/entrypoint.sh"] | |