Skip to content
Snippets Groups Projects
Select Git revision
  • f072f3dcc8724d87e901385fd683d22a1ff959af
  • main default
2 results

melodic.Dockerfile

Blame
  • melodic.Dockerfile 6.66 KiB
    FROM osrf/ros:melodic-desktop-full
    ENV ROS_DISTRO melodic
    
    # Avoid warnings by switching to noninteractive
    ENV DEBIAN_FRONTEND=noninteractive
    
    # Setup environment
    RUN apt-get update && apt-get install -y \
        locales \
        && sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen en_US.UTF-8
    ENV LANG en_US.UTF-8
    ENV LANGUAGE en_US:en
    ENV LC_ALL en_US.UTF-8
    
    # Configure apt and install packages
    RUN apt-get update && apt-get -y install --no-install-recommends \
        apt-transport-https \
        ca-certificates \
        curl \
        gnupg-agent \
        software-properties-common \
        apt-utils dialog 2>&1 \
        # Verify if git, process tools, lsb-release (common in install instructions for CLIs) are installed
        # Install the https transport support package for The Artifactory debian repository
        git \
        git-lfs \
        nano \
        less \
        clang-format \
        direnv \
        xterm \
        terminator \
        zsh \
        #
        ipython \
        python-catkin-tools \
        python-numpy \
        python-osrf-pycommon \
        ros-${ROS_DISTRO}-catkin \
        ros-${ROS_DISTRO}-plotjuggler \
        ros-${ROS_DISTRO}-plotjuggler-ros \
        ros-${ROS_DISTRO}-rosmon \
        ros-${ROS_DISTRO}-rqt-controller-manager \
        ros-${ROS_DISTRO}-rqt-joint-trajectory-controller
    
    # Install docker-ce
    # RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
    # RUN add-apt-repository \
    #     "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    # RUN apt-get update && apt-get -y install --no-install-recommends \
    #     docker-ce \
    #     docker-ce-cli \
    #     containerd.io \
    #     docker-compose-plugin
    #    && rm -rf /var/lib/apt/lists/*
    
    # Configure system to look for debian packages in the Artifactory repository
    # ARG USER_API_KEY_ARTIFACTS_TECNALIA
    # RUN sh -c "echo \
    #     'deb https://${USER_API_KEY_ARTIFACTS_TECNALIA}@artifact.tecnalia.com/artifactory/tecnalia-robotics-debian xenial main' \
    #     >> /etc/apt/sources.list.d/tecnalia.list"
    COPY auth.conf /etc/apt/auth.conf.d/tecnalia.conf
    
    # Import the key in order to be able to use the packages from the repository
    RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 7E72C5B4111A50084C63C9489E7A9B1D990CF897
    
    # Configure rosdep
    RUN sh -c "echo 'yaml https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/raw/master/rosdistro/rosdep_tecnalia.yaml' \
        >> /etc/ros/rosdep/sources.list.d/20-default.list"
    
    # Ros WS dependencies
    RUN apt-get update && apt-get install -y \
        ros-${ROS_DISTRO}-abb-driver \
        ros-${ROS_DISTRO}-ackermann-msgs \
        ros-${ROS_DISTRO}-amcl \
        ros-${ROS_DISTRO}-ar-track-alvar \
        ros-${ROS_DISTRO}-ar-track-alvar-msgs \
        ros-${ROS_DISTRO}-catkin-virtualenv \
        ros-${ROS_DISTRO}-effort-controllers \
        ros-${ROS_DISTRO}-eigen-conversions \
        ros-${ROS_DISTRO}-eigen-stl-containers \
        ros-${ROS_DISTRO}-executive-smach-visualization \
        ros-${ROS_DISTRO}-force-torque-sensor-controller \
        ros-${ROS_DISTRO}-gmapping \
        ros-${ROS_DISTRO}-hector-gazebo-plugins \
        ros-${ROS_DISTRO}-hector-mapping \
        ros-${ROS_DISTRO}-image-view \
        ros-${ROS_DISTRO}-imu-complementary-filter \
        ros-${ROS_DISTRO}-imu-tools \
        ros-${ROS_DISTRO}-industrial-core \
        ros-${ROS_DISTRO}-industrial-robot-simulator \
        ros-${ROS_DISTRO}-interactive-marker-twist-server \
        ros-${ROS_DISTRO}-joint-state-publisher-gui \
        ros-${ROS_DISTRO}-joint-trajectory-controller \
        ros-${ROS_DISTRO}-joy \
        ros-${ROS_DISTRO}-lms1xx \
        ros-${ROS_DISTRO}-map-server \
        ros-${ROS_DISTRO}-mavros-msgs \
        ros-${ROS_DISTRO}-move-base \
        ros-${ROS_DISTRO}-moveit \
        ros-${ROS_DISTRO}-moveit-opw-kinematics-plugin \
        ros-${ROS_DISTRO}-moveit-resources \
        ros-${ROS_DISTRO}-moveit-visual-tools \
        ros-${ROS_DISTRO}-navigation \
        ros-${ROS_DISTRO}-realsense2-camera \
        ros-${ROS_DISTRO}-robot-localization \
        ros-${ROS_DISTRO}-ros-control \
        ros-${ROS_DISTRO}-ros-control-boilerplate \
        ros-${ROS_DISTRO}-ros-controllers \
        ros-${ROS_DISTRO}-rosbridge-server \
        ros-${ROS_DISTRO}-rqt-controller-manager \
        ros-${ROS_DISTRO}-rqt-joint-trajectory-controller \
        ros-${ROS_DISTRO}-rviz-visual-tools \
        ros-${ROS_DISTRO}-serial \
        ros-${ROS_DISTRO}-spacenav-node \
        ros-${ROS_DISTRO}-srdfdom \
        ros-${ROS_DISTRO}-swri-profiler \
        ros-${ROS_DISTRO}-teb-local-planner \
        ros-${ROS_DISTRO}-trac-ik-kinematics-plugin \
        ros-${ROS_DISTRO}-twist-mux \
        ros-${ROS_DISTRO}-ur-msgs \
        ros-${ROS_DISTRO}-usb-cam \
        ros-${ROS_DISTRO}-velocity-controllers \
        #
        python-funcsigs \
        python-lxml \
        python-mock \
        python-pyside \
        python-qt4 \
        python-qt4-dev \
        python-zmq \
        #
        libbluetooth-dev \
        libcanberra-gtk-module  \
        libcanberra-gtk0 \
        libcanberra-gtk3-module \
        libceres-dev \
        libcomedi-dev \
        libcwiid-dev \
        libdouble-conversion-dev \
        libglfw3-dev \
        libmodbus-dev \
        libpyside-dev \
        libqd-dev \
        libshiboken-dev \
        libspnav-dev \
        #
        gir1.2-gtk-3.0 \
        graphviz \
        shiboken \
        spacenavd \
        sqlite3 \
        systemd \
        xdot
    
    # Install Zivid packages
    #RUN wget https://www.zivid.com/hubfs/softwarefiles/releases/1.8.3+96f35dc6-1/u18/zivid-telicam-driver_3.0.1.1-1_amd64.deb \
    #         https://www.zivid.com/hubfs/softwarefiles/releases/1.8.3+96f35dc6-1/u18/zivid_1.8.3+96f35dc6-1_amd64.deb \
    #         https://www.zivid.com/hubfs/softwarefiles/releases/1.8.3+96f35dc6-1/u18/zivid-studio_1.8.3+96f35dc6-1_amd64.deb \
    #         https://www.zivid.com/hubfs/softwarefiles/releases/1.8.3+96f35dc6-1/u18/zivid-tools_1.8.3+96f35dc6-1_amd64.deb
    
    #RUN dpkg -i zivid*.deb
    
    # Fix errors
    #RUN mv /usr/include/flann/ext/lz4.h /usr/include/flann/ext/lz4.h.bak
    #RUN mv /usr/include/flann/ext/lz4hc.h /usr/include/flann/ext/lz4.h.bak
    #RUN ln -s /usr/include/lz4.h /usr/include/flann/ext/lz4.h
    #RUN ln -s /usr/include/lz4hc.h /usr/include/flann/ext/lz4hc.h
    
    # Python 3
    RUN apt-get update && apt-get install -y \
        python3-catkin-pkg-modules \
        python3-gi \
        python3-gi-cairo \
        python3-numpy \
        python3-pip \
        ipython3
    RUN pip3 install sqlite-utils
    
    # Install node for UIs
    # RUN curl -fsSLk https://deb.nodesource.com/setup_14.x | bash - \
    #     && apt-get install -y -qq nodejs \
    #     && npm install -g yarn
    RUN curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash \
        && apt-get install -y nodejs && npm -g install yarn
    
    # Update final image
    RUN apt-get update && apt-get -y upgrade && apt-get -y autoremove
    RUN apt-get clean
    
    # Set entrypoint
    COPY ./ros_entrypoint.sh /
    RUN chmod a+x /ros_entrypoint.sh
    
    ENTRYPOINT ["/ros_entrypoint.sh"]
    CMD ["zsh"]
    ENV SHELL /usr/bin/zsh
    ENV RUNNING_IN_DOCKER true
    
    # Switch back to dialog for any ad-hoc use of apt-get
    ENV DEBIAN_FRONTEND=