175 lines
5.8 KiB
Docker
175 lines
5.8 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 to build on x86_64
|
|
# https://docs.nvidia.com/deeplearning/frameworks/user-guide/index.html
|
|
# https://docs.nvidia.com/deeplearning/frameworks/support-matrix/index.html
|
|
ARG BASE_IMAGE=nvcr.io/nvidia/tritonserver:23.10-py3
|
|
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/x86_64-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
|
|
|
|
# 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
|
|
|
|
# Fundamentals
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
apt-get update && apt-get install -y \
|
|
apt-transport-https \
|
|
bash-completion \
|
|
build-essential \
|
|
ca-certificates \
|
|
clang-format \
|
|
cmake \
|
|
curl \
|
|
git \
|
|
git-lfs \
|
|
gnupg2 \
|
|
iputils-ping \
|
|
locales \
|
|
lsb-release \
|
|
rsync \
|
|
software-properties-common \
|
|
wget \
|
|
vim \
|
|
unzip \
|
|
mlocate \
|
|
libgoogle-glog-dev
|
|
|
|
# Python basics
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
apt-get update && apt-get install -y \
|
|
python3-pip \
|
|
python3-pybind11 \
|
|
python3-pytest \
|
|
python3-pytest-repeat \
|
|
python3-pytest-rerunfailures \
|
|
python3-pytest-cov
|
|
|
|
# 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 \
|
|
libasio-dev \
|
|
libbullet-dev \
|
|
libtinyxml2-dev \
|
|
libcunit1-dev \
|
|
libmnl0 \
|
|
libmnl-dev \
|
|
libv4l-dev \
|
|
libyaml-cpp-dev \
|
|
libopencv-dev \
|
|
libpython3.10 \
|
|
libx264-dev \
|
|
kmod \
|
|
patchelf \
|
|
python3-opencv \
|
|
nlohmann-json3-dev
|
|
|
|
# Python3 (PIP)
|
|
RUN python3 -m pip install -U \
|
|
argcomplete \
|
|
autopep8 \
|
|
flake8==4.0.1 \
|
|
flake8-blind-except \
|
|
flake8-builtins \
|
|
flake8-class-newline \
|
|
flake8-comprehensions \
|
|
flake8-deprecated \
|
|
flake8-docstrings \
|
|
flake8-import-order \
|
|
flake8-quotes \
|
|
onnx \
|
|
pydocstyle \
|
|
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
|
|
|
|
# Install nvv4l2 for GXF Multimedia h264 codec
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
apt-get update && apt-get install -y \
|
|
nvv4l2 \
|
|
&& ln -s /usr/lib/x86_64-linux-gnu/libnvcuvid.so.1 /usr/lib/x86_64-linux-gnu/libnvcuvid.so \
|
|
&& ln -s /usr/lib/x86_64-linux-gnu/libnvidia-encode.so.1 /usr/lib/x86_64-linux-gnu/libnvidia-encode.so
|
|
|
|
# Install VPI packages
|
|
ARG HAS_GPU="true"
|
|
RUN --mount=type=cache,target=/var/cache/apt \
|
|
if [ "$HAS_GPU" = "true" ]; then \
|
|
set -e ; \
|
|
apt-key adv --fetch-key https://repo.download.nvidia.com/jetson/jetson-ota-public.asc ; \
|
|
add-apt-repository "deb http://repo.download.nvidia.com/jetson/x86_64/$(lsb_release -cs) r36.3 main" ; \
|
|
apt-get update ; \
|
|
apt-get install libnvvpi3 vpi3-dev ; \
|
|
fi
|
|
|
|
# Pytorch
|
|
RUN python3 -m pip install -U --extra-index-url https://download.pytorch.org/whl/cu121 \
|
|
torch \
|
|
torchvision \
|
|
torchaudio
|
|
|
|
# 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_8.6.3.1_x86/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/x86_64-linux-gnu"
|
|
ENV TRT_INC_PATH="/usr/include/x86_64-linux-gnu"
|
|
|
|
# Update environment
|
|
ENV LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/opt/tritonserver/lib"
|
|
|
|
# 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-cuda12-x86_64-linux.deb && \
|
|
dpkg -i nvcv-lib-0.5.0_beta-cuda12-x86_64-linux.deb && \
|
|
wget https://github.com/CVCUDA/CV-CUDA/releases/download/v0.5.0-beta/nvcv-dev-0.5.0_beta-cuda12-x86_64-linux.deb && \
|
|
dpkg -i nvcv-dev-0.5.0_beta-cuda12-x86_64-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
|
|
|
|
# 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/x86_64-end-packages.csv |