231 lines
7.3 KiB
Docker
231 lines
7.3 KiB
Docker
# Copyright (c) 2021-2022, 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-base:35.4.1"
|
|
FROM ${BASE_IMAGE}
|
|
|
|
# Disable terminal interaction for apt
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
ENV SHELL /bin/bash
|
|
SHELL ["/bin/bash", "-c"]
|
|
|
|
# Ensure we have universe
|
|
RUN apt-get update \
|
|
&& apt-get install -y software-properties-common \
|
|
&& add-apt-repository universe
|
|
|
|
# Fundamentals
|
|
RUN apt-get update && apt-get install -y \
|
|
build-essential \
|
|
ca-certificates \
|
|
curl \
|
|
git \
|
|
gnupg2 \
|
|
iputils-ping \
|
|
lsb-release \
|
|
sudo \
|
|
tar \
|
|
unzip \
|
|
vim \
|
|
wget \
|
|
libgoogle-glog-dev \
|
|
software-properties-common \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# Upgrade cmake to 3.22.1 to match Ubuntu 22.04
|
|
# Key rotation 2024-01-10
|
|
RUN wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null \
|
|
&& echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null \
|
|
&& apt-get update \
|
|
&& apt-get remove -y cmake && apt-get purge -y cmake && apt-get remove -y cmake-data && apt-get purge -y cmake-data \
|
|
&& apt-get install -y cmake=3.22.1-0kitware1ubuntu20.04.1 cmake-data=3.22.1-0kitware1ubuntu20.04.1 \
|
|
&& cmake --version \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# Set Python3 as default
|
|
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1
|
|
|
|
# Python basics
|
|
RUN apt-get update && apt-get install -y \
|
|
python3-dev \
|
|
python3-flake8 \
|
|
python3-pip \
|
|
python3-pytest-cov \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# Install OpenCV dependencies
|
|
RUN apt-get update && apt-get install -y \
|
|
libavformat-dev \
|
|
libjpeg-dev \
|
|
libopenjp2-7-dev \
|
|
libpng-dev \
|
|
libpq-dev \
|
|
libswscale-dev \
|
|
libtbb2 \
|
|
libtbb-dev \
|
|
libtiff-dev \
|
|
pkg-config \
|
|
yasm \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# Install additional packages needed for ROS 2 dependencies
|
|
RUN apt-get update && apt-get install -y \
|
|
python3-distutils \
|
|
libboost-all-dev \
|
|
libboost-dev \
|
|
libpcl-dev \
|
|
libode-dev \
|
|
lcov \
|
|
python3-zmq \
|
|
libxaw7-dev \
|
|
libgraphicsmagick++1-dev \
|
|
graphicsmagick-libmagick-dev-compat \
|
|
libceres-dev \
|
|
libsuitesparse-dev \
|
|
libncurses5-dev \
|
|
libassimp-dev \
|
|
libyaml-cpp-dev \
|
|
libpcap-dev \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# sklearn dependencies
|
|
RUN apt-get update && apt-get install -y \
|
|
gfortran \
|
|
libatlas-base-dev \
|
|
python3-scipy \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# sklearn Python dependencies
|
|
RUN python3 -m pip install -U \
|
|
Cython \
|
|
wheel
|
|
|
|
# Install sklearn
|
|
RUN python3 -m pip install -U \
|
|
scikit-learn
|
|
|
|
# Install Git-LFS
|
|
RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \
|
|
apt-get update && apt-get install -y \
|
|
git-lfs \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# Install TensorRT and VPI
|
|
RUN apt-get update && apt-get install -y \
|
|
tensorrt \
|
|
vpi2-dev \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# Install tao-converter
|
|
COPY tao/tao-converter-aarch64-tensorrt8.4.zip /opt/nvidia/tao/tao-converter-aarch64-tensorrt8.4.zip
|
|
RUN mkdir -p /opt/nvidia/tao && \
|
|
cd /opt/nvidia/tao && \
|
|
unzip -j tao-converter-aarch64-tensorrt8.4.zip -d /opt/nvidia/tao/jp5 && \
|
|
chmod 755 $(find /opt/nvidia/tao -name "tao-converter") && \
|
|
ln -sf $(find /opt/nvidia/tao -name "tao-converter") /opt/nvidia/tao/tao-converter && \
|
|
rm tao-converter-aarch64-tensorrt8.4.zip
|
|
|
|
ENV PATH="${PATH}:/opt/nvidia/tao"
|
|
|
|
# Update environment
|
|
ENV LD_LIBRARY_PATH="/opt/nvidia/vpi2/lib64:${LD_LIBRARY_PATH}"
|
|
ENV LD_LIBRARY_PATH="/usr/lib/aarch64-linux-gnu/tegra:${LD_LIBRARY_PATH}"
|
|
ENV LD_LIBRARY_PATH="/usr/local/cuda-11.4/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="${PATH}:/usr/local/cuda/bin"
|
|
|
|
# https://forums.developer.nvidia.com/t/error-importerror-usr-lib-aarch64-linux-gnu-libgomp-so-1-cannot-allocate-memory-in-static-tls-block-i-looked-through-available-threads-already/166494/3
|
|
ENV LD_PRELOAD="/usr/lib/aarch64-linux-gnu/libgomp.so.1"
|
|
|
|
# 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.cn/compute/redist/jp/v50/pytorch/torch-1.13.0a0+340c4120.nv22.06-cp38-cp38-linux_aarch64.whl
|
|
|
|
# Install Triton server 2.24 from https://github.com/triton-inference-server/server/releases/tag/v2.24.0
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
autoconf \
|
|
automake \
|
|
libb64-dev \
|
|
libcurl4-openssl-dev \
|
|
libopenblas-dev \
|
|
libre2-dev \
|
|
libssl-dev \
|
|
libtool \
|
|
patchelf \
|
|
rapidjson-dev \
|
|
zlib1g-dev \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
RUN mkdir -p /opt/tritonserver && cd /opt/tritonserver \
|
|
&& wget https://github.com/triton-inference-server/server/releases/download/v2.24.0/tritonserver2.24.0-jetpack5.0.2.tgz \
|
|
&& tar -xzvf tritonserver2.24.0-jetpack5.0.2.tgz \
|
|
&& rm tritonserver2.24.0-jetpack5.0.2.tgz
|
|
|
|
ENV LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/opt/tritonserver/lib"
|
|
|
|
# Add MQTT binaries and libraries
|
|
RUN apt-add-repository ppa:mosquitto-dev/mosquitto-ppa \
|
|
&& apt-get update && apt-get install -y \
|
|
mosquitto \
|
|
mosquitto-clients \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# Note: VPN cannot be on for pymongo download
|
|
RUN python3 -m pip install -U \
|
|
pymongo \
|
|
paho-mqtt
|
|
|
|
# Core dev libraries
|
|
RUN apt-get update && apt-get install -y \
|
|
libasio-dev \
|
|
libbullet-dev \
|
|
libtinyxml2-dev \
|
|
libcunit1-dev \
|
|
libopencv-dev=4.2.0+dfsg-5 \
|
|
python3-opencv=4.2.0+dfsg-5 \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# NPP library
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
libnpp-dev-11-4 \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# Upgrade libc to resolve vulnerabilities including CVE-2019-11477
|
|
RUN apt-get update && apt-get install -y --only-upgrade \
|
|
linux-libc-dev \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# Downgrade protobuf
|
|
RUN python3 -m pip install \
|
|
protobuf==3.20.1
|
|
|
|
# # GPU usage monitoring on Jetson
|
|
# RUN python3 -m pip install -U \
|
|
# jetson-stats
|
|
|
|
# Apply libcudacxx patch for fixing C++17 compilation errors in GXF
|
|
COPY patches/libcudacxx_aarch64_cuda_11_4.diff /tmp/
|
|
RUN patch -i /tmp/libcudacxx_aarch64_cuda_11_4.diff /usr/local/cuda-11.4/targets/aarch64-linux/include/cuda/std/detail/libcxx/include/cmath
|