File size: 3,276 Bytes
93c7565 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | # 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"]
|