Files
dora-zed/Dockerfile
T
cesarandClaude Opus 5 126dbf4f32 remove detection from the node
dora-zed publishes camera data only. The two engines under src/engines/, the
objects output, the ZED_ENGINE/ZED_DETECTION_*/ZED_ONNX_* variables and the
ZED_PC_MODE=ROI crop are gone, along with the standalone engine test and the
model export script.

This drops the unconditional ONNX Runtime requirement from CMakeLists, the
Dockerfile and the install scripts, so the node now configures on a machine
with no ONNX Runtime — which is what blocked the Jetson build, since there is
no official ARM64 GPU binary.

zed_native is dropped rather than kept: it is bound to the live camera handle
and cannot run in a node that receives images over a dataflow. The removed
code remains reachable at tag v0.1.0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y7g2cBJ5e3r15ZbJ9WZn8c
2026-09-08 09:12:40 -03:00

57 lines
2.3 KiB
Docker

# Reproducible build environment for dora-zed.
#
# Compiles only — no camera is needed. Requires an NVIDIA driver and the NVIDIA
# Container Toolkit on the host, as the ZED SDK does anyway.
#
# NVIDIA_DRIVER_CAPABILITIES below includes `video` because libsl_zed.so links
# against NVDEC (libnvcuvid) and NVENC (libnvidia-encode); the container runtime
# mounts those from the host only when `video` is in the list.
#
# Ubuntu 24.04 is the newest release Stereolabs ships a ZED SDK for.
#
# docker build -t dora-zed-build .
# docker run --rm --gpus all --user "$(id -u):$(id -g)" \
# -v "$PWD:/src" -v dora-zed-cargo:/usr/local/cargo/registry dora-zed-build
#
# --user keeps build/ and bin/ owned by you instead of root.
#
# The first run clones dora-rs and compiles it with Cargo, which takes a while;
# the named volume keeps the registry cache across runs.
FROM nvidia/cuda:12.8.1-devel-ubuntu24.04
ARG ZED_VERSION=5.2
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential cmake git curl ca-certificates pkg-config \
libopencv-dev zstd udev sudo \
&& rm -rf /var/lib/apt/lists/*
# The toolchain lives outside /root so the container can run as the invoking
# user (--user) and still write the cargo caches. registry/ is created here so
# that a named volume mounted over it inherits these permissions rather than
# being created root-owned.
ENV RUSTUP_HOME=/usr/local/rustup \
CARGO_HOME=/usr/local/cargo \
PATH=/usr/local/cargo/bin:${PATH}
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \
| sh -s -- -y --profile minimal --default-toolchain stable \
&& mkdir -p ${CARGO_HOME}/registry \
&& chmod -R a+w ${RUSTUP_HOME} ${CARGO_HOME}
# The installer leaves /usr/local/zed as drwxrwx--- root:zed, which an arbitrary
# --user uid cannot read, so relax it to make find_package(zed) work for one.
RUN curl -fSL -o /tmp/ZED_SDK.run \
"https://download.stereolabs.com/zedsdk/${ZED_VERSION}/cu12/ubuntu24" \
&& chmod +x /tmp/ZED_SDK.run \
&& /tmp/ZED_SDK.run -- silent skip_python skip_tools skip_drivers skip_cuda \
&& chmod -R a+rX /usr/local/zed \
&& rm -f /tmp/ZED_SDK.run
ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility,video
WORKDIR /src
CMD ["scripts/build.sh"]