246 lines
8.1 KiB
Docker
246 lines
8.1 KiB
Docker
# Copyright (c) 2021-2024, NVIDIA CORPORATION. All rights reserved.
|
|
#
|
|
# NVIDIA CORPORATION and its licensors retain all intellectual property
|
|
# and proprietary rights in and to this software, related documentation
|
|
# and any modifications thereto. Any use, reproduction, disclosure or
|
|
# distribution of this software and related documentation without an express
|
|
# license agreement from NVIDIA CORPORATION is strictly prohibited.
|
|
|
|
# Docker file for aarch64 based Jetson device
|
|
ARG BASE_IMAGE="nvcr.io/nvidia/l4t-cuda:12.2.12-devel"
|
|
FROM ${BASE_IMAGE}
|
|
|
|
# Store list of packages (must be first)
|
|
RUN mkdir -p /opt/nvidia/isaac_ros_dev_base && dpkg-query -W | sort > /opt/nvidia/isaac_ros_dev_base/aarch64-start-packages.csv
|
|
|
|
# Disable terminal interaction for apt
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
ENV SHELL /bin/bash
|
|
SHELL ["/bin/bash", "-c"]
|
|
|
|
# Ensure we have universe
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
apt-get update && apt-get install -y \
|
|
software-properties-common \
|
|
&& add-apt-repository universe \
|
|
&& apt-get update
|
|
|
|
# Fundamentals
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
apt-get update && apt-get install -y \
|
|
apt-utils \
|
|
bash-completion \
|
|
build-essential \
|
|
ca-certificates \
|
|
curl \
|
|
git \
|
|
git-lfs \
|
|
gnupg2 \
|
|
iputils-ping \
|
|
libgoogle-glog-dev \
|
|
locales \
|
|
lsb-release \
|
|
software-properties-common \
|
|
sudo \
|
|
tar \
|
|
unzip \
|
|
vim \
|
|
wget \
|
|
zlib1g-dev
|
|
|
|
# Add Isaac apt repository
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
wget -qO - https://isaac.download.nvidia.com/isaac-ros/repos.key | apt-key add - && \
|
|
grep -qxF "deb https://isaac.download.nvidia.com/isaac-ros/release-3 $(lsb_release -cs) release-3.0" /etc/apt/sources.list || \
|
|
echo "deb https://isaac.download.nvidia.com/isaac-ros/release-3 $(lsb_release -cs) release-3.0" | tee -a /etc/apt/sources.list \
|
|
&& apt-get update
|
|
|
|
# Setup Jetson debian repositories
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
apt-key adv --fetch-keys https://repo.download.nvidia.com/jetson/jetson-ota-public.asc \
|
|
&& apt-key adv --fetch-keys http://l4t-repo.nvidia.com/jetson-ota-internal.key \
|
|
&& echo 'deb https://repo.download.nvidia.com/jetson/common r36.3 main' > /etc/apt/sources.list.d/nvidia-l4t-apt-source.list \
|
|
&& echo 'deb https://repo.download.nvidia.com/jetson/t234 r36.3 main' >> /etc/apt/sources.list.d/nvidia-l4t-apt-source.list \
|
|
&& apt-get update
|
|
|
|
# Python basics
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
apt-get update && apt-get install -y \
|
|
python3-dev \
|
|
python3-distutils \
|
|
python3-flake8 \
|
|
python3-pip \
|
|
python3-pytest-cov \
|
|
python3-venv \
|
|
python3-zmq \
|
|
python3.10 \
|
|
python3.10-venv
|
|
|
|
# Set Python3 as default
|
|
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1
|
|
|
|
# Core dev libraries
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
apt-get update && apt-get install -y \
|
|
ffmpeg \
|
|
gfortran \
|
|
graphicsmagick-libmagick-dev-compat \
|
|
jq \
|
|
kmod \
|
|
lcov \
|
|
libasio-dev \
|
|
libassimp-dev \
|
|
libatlas-base-dev \
|
|
libblas3 \
|
|
libatlas3-base \
|
|
libboost-all-dev \
|
|
libboost-dev \
|
|
libceres-dev \
|
|
libbullet-dev \
|
|
libcunit1-dev \
|
|
libffi7 \
|
|
libfreetype6 \
|
|
libgraphicsmagick++1-dev \
|
|
libhidapi-libusb0 \
|
|
libinput10 \
|
|
libjpeg8 \
|
|
liblapack3 \
|
|
libmnl0 \
|
|
libmnl-dev \
|
|
libncurses5-dev \
|
|
libode-dev \
|
|
libopenblas0 \
|
|
libopencv-dev=4.5.4+dfsg-9ubuntu4 \
|
|
libopenmpi3 \
|
|
libpcap-dev \
|
|
libpcl-dev \
|
|
libsuitesparse-dev \
|
|
libtinyxml2-dev \
|
|
libturbojpeg \
|
|
linuxptp \
|
|
libunwind8 \
|
|
libv4l-0 \
|
|
libx264-dev \
|
|
libxaw7-dev \
|
|
libyaml-cpp-dev \
|
|
llvm-14 \
|
|
nlohmann-json3-dev \
|
|
python3-opencv=4.5.4+dfsg-9ubuntu4 \
|
|
python3-scipy
|
|
|
|
# Additional Python dependencies
|
|
RUN python3 -m pip install -U \
|
|
Cython \
|
|
pymongo \
|
|
wheel \
|
|
scikit-learn \
|
|
ninja \
|
|
networkx \
|
|
numpy \
|
|
numpy-quaternion \
|
|
pyyaml \
|
|
setuptools_scm>=6.2 \
|
|
trimesh \
|
|
yourdfpy>=0.0.53 \
|
|
warp-lang>=0.9.0 \
|
|
scipy>=1.7.0 \
|
|
tqdm \
|
|
importlib_resources
|
|
|
|
|
|
# Update environment
|
|
RUN update-alternatives --install /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-14 14
|
|
ENV LD_LIBRARY_PATH="/opt/nvidia/vpi3/lib64:${LD_LIBRARY_PATH}"
|
|
ENV LD_LIBRARY_PATH="/usr/lib/aarch64-linux-gnu/tegra:${LD_LIBRARY_PATH}"
|
|
ENV LD_LIBRARY_PATH="/usr/local/cuda-12.2/targets/aarch64-linux/lib:${LD_LIBRARY_PATH}"
|
|
ENV LD_LIBRARY_PATH="/usr/lib/aarch64-linux-gnu/tegra-egl:${LD_LIBRARY_PATH}"
|
|
ENV LD_LIBRARY_PATH="/usr/lib/aarch64-linux-gnu/tegra/weston:${LD_LIBRARY_PATH}"
|
|
ENV LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/lib/aarch64-linux-gnu-host"
|
|
ENV PATH="/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/src/tensorrt/bin:${PATH}"
|
|
|
|
# Install CUDA packages
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
apt-get update && apt-get install -y --no-install-recommends \
|
|
cuda-cudart-12-2 \
|
|
cuda-libraries-12-2 \
|
|
cuda-nvml-dev-12-2 \
|
|
cuda-sanitizer-12-2 \
|
|
cuda-toolkit-12-2 \
|
|
libcublas-12-2 \
|
|
libcudnn8 \
|
|
libcusparse-12-2 \
|
|
libnpp-12-2
|
|
|
|
# Install TensorRT and VPI
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
mkdir -p /lib/firmware && \
|
|
apt-get update && apt-get install -y \
|
|
libnvvpi3 \
|
|
tensorrt \
|
|
vpi3-dev
|
|
|
|
# Install Tao converter
|
|
RUN mkdir -p /opt/nvidia/tao && cd /opt/nvidia/tao && \
|
|
wget --content-disposition 'https://api.ngc.nvidia.com/v2/resources/org/nvidia/team/tao/tao-converter/v5.1.0_jp6.0_aarch64/files?redirect=true&path=tao-converter' -O tao-converter && \
|
|
chmod 755 tao-converter
|
|
|
|
ENV PATH="${PATH}:/opt/nvidia/tao"
|
|
ENV TRT_LIB_PATH="/usr/lib/aarch64-linux-gnu"
|
|
ENV TRT_INCLUDE_PATH="/usr/include/aarch64-linux-gnu"
|
|
|
|
# PyTorch (NV CUDA edition)
|
|
# https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform/index.html
|
|
RUN python3 -m pip install --no-cache \
|
|
https://developer.download.nvidia.com/compute/redist/jp/v60dp/pytorch/torch-2.2.0a0+6a974be.nv23.11-cp310-cp310-linux_aarch64.whl
|
|
|
|
# Install Triton server from https://github.com/triton-inference-server/server/releases/tag/v2.40.0
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
apt-get update && apt-get install -y --no-install-recommends \
|
|
libb64-0d \
|
|
libre2-9 \
|
|
rapidjson-dev \
|
|
libopenblas-dev \
|
|
libarchive-dev
|
|
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
cd /opt \
|
|
&& wget https://github.com/triton-inference-server/server/releases/download/v2.40.0/tritonserver2.40.0-igpu.tar.gz \
|
|
&& tar -xzvf tritonserver2.40.0-igpu.tar.gz \
|
|
&& chmod 644 /opt/tritonserver/backends/tensorflow/libtensorflow_cc.so.2 \
|
|
&& chmod 644 /opt/tritonserver/backends/tensorflow/libtensorflow_framework.so.2 \
|
|
&& rm tritonserver2.40.0-igpu.tar.gz
|
|
|
|
ENV LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/opt/tritonserver/lib"
|
|
|
|
# Install boost version >= 1.78 for boost::span
|
|
# Current libboost-dev apt packages are < 1.78, so install from tar.gz
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
wget -O /tmp/boost.tar.gz \
|
|
https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.gz \
|
|
&& (cd /tmp && tar xzf boost.tar.gz) \
|
|
&& cd /tmp/boost_1_80_0 \
|
|
&& ./bootstrap.sh --prefix=/usr \
|
|
&& ./b2 install \
|
|
&& rm -rf /tmp/boost*
|
|
|
|
# Install CV-CUDA
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
cd /tmp && \
|
|
wget https://github.com/CVCUDA/CV-CUDA/releases/download/v0.5.0-beta/nvcv-lib-0.5.0_beta_DP-cuda12-aarch64-linux.deb && \
|
|
dpkg -i nvcv-lib-0.5.0_beta_DP-cuda12-aarch64-linux.deb && \
|
|
wget https://github.com/CVCUDA/CV-CUDA/releases/download/v0.5.0-beta/nvcv-dev-0.5.0_beta_DP-cuda12-aarch64-linux.deb && \
|
|
dpkg -i nvcv-dev-0.5.0_beta_DP-cuda12-aarch64-linux.deb
|
|
|
|
# Add MQTT binaries and libraries
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
apt-add-repository ppa:mosquitto-dev/mosquitto-ppa \
|
|
&& apt-get update && apt-get install -y \
|
|
mosquitto \
|
|
mosquitto-clients
|
|
|
|
# Install jtop
|
|
RUN python3 -m pip install -U \
|
|
jetson-stats
|
|
|
|
# Store list of packages (must be last)
|
|
RUN mkdir -p /opt/nvidia/isaac_ros_dev_base && dpkg-query -W | sort > /opt/nvidia/isaac_ros_dev_base/aarch64-end-packages.csv |