updated docker to not use nvidia container

This commit is contained in:
Matas Keras 2023-06-06 12:13:24 -04:00
parent 54c80c20ce
commit ad8fe37b86
1 changed files with 265 additions and 12 deletions

View File

@ -1,13 +1,268 @@
FROM mzahana/ros-melodic-cuda10.1:latest
LABEL maintainer="Mohamed Abdelkader <mohamedashraf123@gmail.com>"
USER arrow
FROM ubuntu:18.04
ENV DEBIAN_FRONTEND noninteractive
ENV ARROW_HOME /home/arrow
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
RUN apt-get update && apt-get -y --quiet --no-install-recommends install \
sudo \
nano \
gedit \
net-tools \
iputils-* \
bash-completion \
autotools-dev \
dh-autoreconf \
bzip2 \
ca-certificates \
ccache \
cmake \
cppcheck \
curl \
dirmngr \
doxygen \
file \
g++ \
gcc \
gdb \
git \
gnupg \
gosu \
lcov \
libfreetype6-dev \
libgtest-dev \
libpng-dev \
lsb-release \
make \
ninja-build \
openjdk-8-jdk \
openjdk-8-jre \
openssh-client \
pkg-config \
python-pip \
python-pygments \
python-setuptools \
python-wstool \
python3-dev \
python3-pip \
python3-pygments \
python3-setuptools \
locate \
rsync \
shellcheck \
tzdata \
unzip \
wget \
xsltproc \
zip \
&& apt-get -y autoremove \
&& apt-get clean autoclean \
&& rm -rf /var/lib/apt/lists/{apt,dpkg,cache,log} /tmp/* /var/tmp/*
# gtest
RUN cd /usr/src/gtest \
&& mkdir build && cd build \
&& cmake .. && make \
&& cp *.a /usr/lib \
&& cd .. && rm -rf build
RUN python -m pip install --upgrade pip \
&& pip install setuptools pkgconfig wheel \
&& pip install argparse argcomplete coverage jinja2 empy numpy requests serial toml pyyaml cerberus
# Python 3 dependencies installed by pip
RUN pip3 install argparse argcomplete coverage cerberus empy jinja2 \
matplotlib==3.0.* numpy pkgconfig pyros-genmsg pyulog pyyaml \
requests serial toml pyulog wheel
# astyle v2.06
RUN wget -q https://downloads.sourceforge.net/project/astyle/astyle/astyle%202.06/astyle_2.06_linux.tar.gz -O /tmp/astyle.tar.gz \
&& cd /tmp && tar zxf astyle.tar.gz && cd astyle/src \
&& make -f ../build/gcc/Makefile && cp bin/astyle /usr/local/bin \
&& rm -rf /tmp/*
# Gradle (Required to build Fast-RTPS-Gen)
RUN wget -q "https://services.gradle.org/distributions/gradle-5.6.2-bin.zip" -O /tmp/gradle-5.6.2-bin.zip \
&& mkdir /opt/gradle \
&& cd /tmp \
&& unzip -d /opt/gradle gradle-5.6.2-bin.zip \
&& rm -rf /tmp/*
ENV PATH "/opt/gradle/gradle-5.6.2/bin:$PATH"
# Fast-RTPS
RUN apt install libssl-dev -y
RUN git clone --recursive https://github.com/eProsima/Fast-RTPS.git -b 1.8.x /tmp/FastRTPS-1.8.2 \
&& cd /tmp/FastRTPS-1.8.2 \
&& mkdir build && cd build \
&& cmake -DTHIRDPARTY=ON -DSECURITY=ON .. \
&& cmake --build . --target install \
&& rm -rf /tmp/*
# Fast-RTPS-Gen (required since Fast-RTPS-Gen got split from Fast-RTPS repo since 1.8.x)
RUN git clone --recursive https://github.com/eProsima/Fast-RTPS-Gen.git -b v1.0.2 /tmp/Fast-RTPS-Gen \
&& cd /tmp/Fast-RTPS-Gen \
&& gradle assemble \
&& cp share/fastrtps/fastrtpsgen.jar /usr/local/share/fastrtps/ \
&& cp scripts/fastrtpsgen /usr/local/bin/ \
&& rm -rf /tmp/*
# create arrow with id 1000 with sudo access
RUN useradd --shell /bin/bash -u 1000 -c "" -m arrow && usermod -a -G dialout arrow && echo "arrow:arrow" | chpasswd && adduser arrow sudo
RUN sed -i '/force_color_prompt/s/^#//g' ~/.bashrc
RUN sed -i '/force_color_prompt/s/^#//g' /home/arrow/.bashrc
# setup virtual X server
RUN mkdir /tmp/.X11-unix && \
chmod 1777 /tmp/.X11-unix && \
chown -R root:root /tmp/.X11-unix
ENV DISPLAY :99
ENV CCACHE_UMASK=000
ENV FASTRTPSGEN_DIR="/usr/local/bin/"
ENV PATH="/usr/lib/ccache:$PATH"
ENV TERM=xterm
ENV TZ=UTC
RUN echo "source /etc/profile.d/bash_completion.sh" >> /home/arrow/.bashrc
# SITL UDP PORTS
EXPOSE 14556/udp
EXPOSE 14557/udp
#start of ros install
ENV ROS_DISTRO melodic
ARG TOKEN
RUN echo "arrow" | sudo -S apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub
RUN echo "arrow" | sudo -S apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub
RUN wget --quiet http://packages.osrfoundation.org/gazebo.key -O - | apt-key add - \
&& sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -sc` main" > /etc/apt/sources.list.d/gazebo-stable.list' \
&& apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 \
&& sh -c 'echo "deb http://packages.ros.org/ros/ubuntu `lsb_release -sc` main" > /etc/apt/sources.list.d/ros-latest.list' \
&& sh -c 'echo "deb http://packages.ros.org/ros-shadow-fixed/ubuntu `lsb_release -sc` main" > /etc/apt/sources.list.d/ros-shadow.list' \
&& curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add - \
&& apt-get update \
&& apt-get -y upgrade \
&& apt-get -y dist-upgrade \
&& DEBIAN_FRONTEND=noninteractive apt-get -y --quiet --no-install-recommends install \
ant \
gazebo9 \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-ugly \
libeigen3-dev \
libgazebo9-dev \
libgstreamer-plugins-base1.0-dev \
libimage-exiftool-perl \
libopencv-dev \
libxml2-utils \
pkg-config \
protobuf-compiler \
geographiclib-tools \
libeigen3-dev \
libgeographic-dev \
libopencv-dev \
python-catkin-tools \
python-tk \
python3-pip \
ros-$ROS_DISTRO-gazebo-ros-pkgs \
ros-$ROS_DISTRO-mavlink \
ros-$ROS_DISTRO-mavros \
ros-$ROS_DISTRO-mavros-extras \
ros-$ROS_DISTRO-pcl-conversions \
ros-$ROS_DISTRO-pcl-msgs \
ros-$ROS_DISTRO-pcl-ros \
ros-$ROS_DISTRO-ros-base \
ros-$ROS_DISTRO-rostest \
ros-$ROS_DISTRO-rosunit \
ros-$ROS_DISTRO-xacro \
ros-$ROS_DISTRO-tf2-ros \
ros-$ROS_DISTRO-roslint \
ros-$ROS_DISTRO-rviz \
xvfb \
python-pil \
python-yaml \
libgeos-dev \
python-lxml \
libgdal-dev \
build-essential \
python-dev \
libjpeg-dev \
zlib1g-dev \
libfreetype6-dev \
python-virtualenv \
python-rosdep \
&& geographiclib-get-geoids egm96-5 \
&& apt-get -y autoremove \
&& apt-get clean autoclean \
&& rm -rf /var/lib/apt/lists/{apt,dpkg,cache,log} /tmp/* /var/tmp/* \
# pip
&& pip3 install setuptools wheel \
&& pip3 install pyulog matplotlib \
&& pip3 install catkin_pkg px4tools pymavlink \
&& rm -rf /var/lib/apt/lists/{apt,dpkg,cache,log} /tmp/* /var/tmp/*
RUN echo "source /opt/ros/melodic/setup.bash" >> /home/arrow/.bashrc
RUN pip install Shapely Pillow MapProxy uwsgi
# ADD mapproxy.yaml /mapproxy.yaml
# install MAVLink headers
RUN git clone --depth 1 https://github.com/mavlink/c_library_v2.git /usr/local/include/mavlink/v2.0 && rm -rf /usr/local/include/mavlink/v2.0/.git
# Some QT-Apps/Gazebo don't not show controls without this
ENV QT_X11_NO_MITSHM 1
# Gazebo 7 crashes on VM with OpenGL 3.3 support, so downgrade to OpenGL 2.1
# http://answers.gazebosim.org/question/13214/virtual-machine-not-launching-gazebo/
# https://www.mesa3d.org/vmware-guest.html
ENV SVGA_VGPU10 0
# Use UTF8 encoding in java tools (needed to compile jMAVSim)
ENV JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
# Install MAVSDK library
RUN wget https://github.com/mavlink/MAVSDK/releases/download/v0.23.0/mavsdk_0.23.0_ubuntu18.04_amd64.deb \
&& dpkg -i mavsdk_0.23.0_ubuntu18.04_amd64.deb
RUN rosdep init && su -c "rosdep update -c /home/arrow/.ros/rosdep/sources.cache" - arrow
RUN echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
USER arrow
ENV ARROW_HOME /home/arrow
ENV CATKIN_WS $ARROW_HOME/catkin_ws
RUN echo "Working Folder is:$ARROW_HOME"
# RUN echo "Setting up the workspace"
# Create & build catkin_ws
RUN mkdir -p $ARROW_HOME/catkin_ws/src \
&& echo "arrow" | sudo -S chown -R arrow:arrow $ARROW_HOME/catkin_ws \
&& cd ~/catkin_ws \
&& catkin init \
&& catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release \
&& catkin config --merge-devel \
&& catkin config --extend /opt/ros/$ROS_DISTRO \
&& catkin build \
&& cd ~/catkin_ws/src
#start of px4 setup
RUN echo "arrow" | sudo -S apt-get update && sudo apt-get -y --quiet --no-install-recommends install software-properties-common apt-utils
# Insatll VS Code for easy code development
@ -39,13 +294,7 @@ RUN echo "export PATH=\$PATH:/usr/local/cuda-10.1/bin" >> /home/arrow/.bashrc
RUN echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64:/usr/local/cuda-10.1/targets/x86_64-linux/lib/:/usr/local/cuda/extras/CUPTI/lib64/" >> /home/arrow/.bashrc
RUN echo "export CUDA_HOME=/usr/local/cuda" >> /home/arrow/.bashrc
RUN touch ~/hi
RUN echo "hi" > ~/hi
RUN chmod u+w ~/catkin_ws
RUN mkdir -p ~/test_ws/src
RUN chmod 777 ~/catkin_ws/src
RUN echo "arrow" | sudo -S chown -R arrow ~/catkin_ws
RUN cd ~/test_ws/src
RUN echo "arrow" | sudo -S apt-get update
RUN echo "arrow" | sudo -S apt-get install git
@ -73,3 +322,7 @@ RUN echo "arrow" | sudo -S apt-get remove modemmanager -y
RUN echo "arrow" | sudo -S apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
RUN echo "arrow" | sudo -S apt install libqt5gui5 -y
RUN echo "arrow" | sudo -S apt install libfuse2 -y
RUN cd ~ && wget https://github.com/mavlink/qgroundcontrol/releases/download/v4.2.6/QGroundControl.AppImage
RUN echo "arrow" | sudo -S apt-get install -y libpulse-dev
RUN echo "arrow"| sudo -S apt-get install fuse