diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3666b2e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,114 @@ +FROM ubuntu:20.04 as base_build +ENV DEBIAN_FRONTEND noninteractive +ENV PYTHON_VERSION="3.8" +ARG BASE_IMAGE=nvcr.io/nvidia/l4t-base:r32.5.0 + +ARG ROS_ENVIROMENT_VERSION_GIT_BRANCH=master +ARG ROS_ENVIROMENT_VERSION_GIT_COMMIT=HEAD + +LABEL maintainer=ronaldsonbellande@gmail.com +LABEL ros_enviroment_github_branchtag=${ROS_ENVIROMENT_VERSION_GIT_BRANCH} +LABEL ros_enviroment_github_commit=${ROS_ENVIROMENT_VERSION_GIT_COMMIT} + +# Ubuntu setup +RUN apt-get update -y +RUN apt-get upgrade -y + +# RUN workspace and sourcing +WORKDIR ./ +COPY requirements.txt . + +ARG ROS_PKG=ros_base +ENV ROS_DISTRO=noetic +ENV ROS_ROOT=/opt/ros/${ROS_DISTRO} +ENV DEBIAN_FRONTEND=noninteractive + +# add the ROS deb repo to the apt sources list +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + git \ + cmake \ + build-essential \ + curl \ + wget \ + gnupg2 \ + lsb-release \ + ca-certificates \ + && rm -rf /var/lib/apt/lists/* + +RUN sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' +RUN curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add - + + +# install bootstrap dependencies +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + libpython3-dev \ + python3-rosdep \ + python3-rosinstall-generator \ + python3-vcstool \ + build-essential && \ + rosdep init && \ + rosdep update && \ + rm -rf /var/lib/apt/lists/* + + +# download/build the ROS source +RUN mkdir ros_catkin_ws && \ + cd ros_catkin_ws && \ + rosinstall_generator ${ROS_PKG} vision_msgs --rosdistro ${ROS_DISTRO} --deps --tar > ${ROS_DISTRO}-${ROS_PKG}.rosinstall && \ + mkdir src && \ + vcs import --input ${ROS_DISTRO}-${ROS_PKG}.rosinstall ./src && \ + apt-get update && \ + rosdep install --from-paths ./src --ignore-packages-from-source --rosdistro ${ROS_DISTRO} --skip-keys python3-pykdl -y && \ + python3 ./src/catkin/bin/catkin_make_isolated --install --install-space ${ROS_ROOT} -DCMAKE_BUILD_TYPE=Release && \ + rm -rf /var/lib/apt/lists/* + + + # Install dependencies +RUN apt-get update && apt-get install -y --no-install-recommends \ + apt-utils \ + automake \ + build-essential \ + ca-certificates \ + curl \ + git \ + python3-pip \ + libcurl3-dev \ + libfreetype6-dev \ + libpng-dev \ + libtool \ + libzmq3-dev \ + mlocate \ + openjdk-8-jdk\ + openjdk-8-jre-headless \ + pkg-config \ + python-dev \ + software-properties-common \ + swig \ + unzip \ + wget \ + zip \ + zlib1g-dev \ + python3-distutils \ + && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + + +# Install python 3.8 and make primary +RUN add-apt-repository ppa:deadsnakes/ppa && \ + apt-get update && apt-get install -y \ + python3.8 python3.8-dev python3-pip python3.8-venv && \ + update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1 + +# pip install +RUN pip3 install --upgrade pip + +RUN curl -fSsL -O https://bootstrap.pypa.io/get-pip.py && \ + python3 get-pip.py && \ + rm get-pip.py + + +# Install python libraries +RUN pip --no-cache-dir install -r requirements.txt diff --git a/gpu.Dockerfile b/gpu.Dockerfile new file mode 100644 index 0000000..c4bcaaa --- /dev/null +++ b/gpu.Dockerfile @@ -0,0 +1,144 @@ +FROM ubuntu:20.04 as base_build +ENV DEBIAN_FRONTEND noninteractive +ENV PYTHON_VERSION="3.8" +ARG BASE_IMAGE=nvcr.io/nvidia/l4t-base:r32.5.0 + +ARG ROS_ENVIROMENT_VERSION_GIT_BRANCH=master +ARG ROS_ENVIROMENT_VERSION_GIT_COMMIT=HEAD + +LABEL maintainer=ronaldsonbellande@gmail.com +LABEL ros_enviroment_github_branchtag=${ROS_ENVIROMENT_VERSION_GIT_BRANCH} +LABEL ros_enviroment_github_commit=${ROS_ENVIROMENT_VERSION_GIT_COMMIT} + +# Ubuntu setup +RUN apt-get update -y +RUN apt-get upgrade -y + +# RUN workspace and sourcing +WORKDIR ./ +COPY requirements.txt . + +ARG ROS_PKG=ros_base +ENV ROS_DISTRO=noetic +ENV ROS_ROOT=/opt/ros/${ROS_DISTRO} +ENV DEBIAN_FRONTEND=noninteractive + +# add the ROS deb repo to the apt sources list +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + git \ + cmake \ + build-essential \ + curl \ + wget \ + gnupg2 \ + lsb-release \ + ca-certificates \ + && rm -rf /var/lib/apt/lists/* + +RUN sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' +RUN curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add - + + +# install bootstrap dependencies +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + libpython3-dev \ + python3-rosdep \ + python3-rosinstall-generator \ + python3-vcstool \ + build-essential && \ + rosdep init && \ + rosdep update && \ + rm -rf /var/lib/apt/lists/* + + +# download/build the ROS source +RUN mkdir ros_catkin_ws && \ + cd ros_catkin_ws && \ + rosinstall_generator ${ROS_PKG} vision_msgs --rosdistro ${ROS_DISTRO} --deps --tar > ${ROS_DISTRO}-${ROS_PKG}.rosinstall && \ + mkdir src && \ + vcs import --input ${ROS_DISTRO}-${ROS_PKG}.rosinstall ./src && \ + apt-get update && \ + rosdep install --from-paths ./src --ignore-packages-from-source --rosdistro ${ROS_DISTRO} --skip-keys python3-pykdl -y && \ + python3 ./src/catkin/bin/catkin_make_isolated --install --install-space ${ROS_ROOT} -DCMAKE_BUILD_TYPE=Release && \ + rm -rf /var/lib/apt/lists/* + + # Install dependencies +RUN apt-get update && apt-get install -y --no-install-recommends \ + apt-utils \ + automake \ + build-essential \ + ca-certificates \ + curl \ + git \ + python3-pip \ + libcurl3-dev \ + libfreetype6-dev \ + libpng-dev \ + libtool \ + libzmq3-dev \ + mlocate \ + openjdk-8-jdk\ + openjdk-8-jre-headless \ + pkg-config \ + python-dev \ + software-properties-common \ + swig \ + unzip \ + wget \ + zip \ + zlib1g-dev \ + python3-distutils \ + && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + + +# Install python 3.8 and make primary +RUN add-apt-repository ppa:deadsnakes/ppa && \ + apt-get update && apt-get install -y \ + python3.8 python3.8-dev python3-pip python3.8-venv && \ + update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1 + +# pip install +RUN pip3 install --upgrade pip + +RUN curl -fSsL -O https://bootstrap.pypa.io/get-pip.py && \ + python3 get-pip.py && \ + rm get-pip.py + + +# Install python libraries +RUN pip --no-cache-dir install -r requirements.txt + + +RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub && \ + apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates \ + cuda-command-line-tools-11-2 \ + cuda-nvrtc-${CUDA/./-} \ + libcublas-11-2 \ + libcublas-dev-11-2 \ + libcufft-11-2 \ + libcurand-11-2 \ + libcusolver-11-2 \ + libcusparse-11-2 \ + libcudnn8=${CUDNN_VERSION}-1+cuda${CUDA} \ + libgomp1 \ + build-essential \ + curl \ + libfreetype6-dev \ + pkg-config \ + software-properties-common \ + unzip + +# We don't install libnvinfer-dev since we don't need to build against TensorRT +RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/7fa2af80.pub && \ + echo "deb https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64 /" > /etc/apt/sources.list.d/tensorRT.list && \ + apt-get update && \ + apt-get install -y --no-install-recommends libnvinfer7=${TF_TENSORRT_VERSION}-1+cuda11.0 \ + libnvinfer-plugin7=${TF_TENSORRT_VERSION}-1+cuda11.0 \ + && apt-get clean && \ + rm -rf /var/lib/apt/lists/*; + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..6b9cf2f --- /dev/null +++ b/requirements.txt @@ -0,0 +1,28 @@ +# Recomandation for noetic build + +setuptools +numpy +pandas +scipy +sklearn +future +grpcio +h5py +requests +opencv-python +python-math +random2 +pytest-warnings +os.path2 +pydicom +glob2 +pytest-shutil +DateTime +zipfile36 +urllib3 +tensorflow +keras==2.3.1 +python-time +trimesh +librosa +gym