1
+ ARG BASE_IMAGE=osrf/ros
2
+ ARG BASE_TAG= jazzy-desktop-full
3
+
4
+ FROM ${BASE_IMAGE}:${BASE_TAG}
5
+
6
+ # set the environment variable with the command ENV <key>=<value>, it can be replaced online
7
+ ENV DEBIAN_FRONTEND=noninteractive
8
+ ENV GZ_VERSION=harmonic
9
+ ## arg ros2 distro
10
+ ARG DISTRO=humble
11
+ # RUN is used to execute and add new layer on top of the base immage
12
+ RUN apt-get update
13
+
14
+
15
+ RUN apt-get install -y ros-${DISTRO}-plotjuggler
16
+ RUN apt-get install -y ros-${DISTRO}-ros-gz
17
+ RUN apt-get install -y \
18
+ ros-${DISTRO}-joint-state-publisher \
19
+ ros-${DISTRO}-joint-state-publisher-gui \
20
+ ros-${DISTRO}-gz-ros2-control \
21
+ ros-${DISTRO}-teleop-twist-joy \
22
+ ros-${DISTRO}-joy \
23
+ ros-${DISTRO}-pinocchio \
24
+ ros-${DISTRO}-ros2-control \
25
+ ros-${DISTRO}-ros2-controllers \
26
+ ros-${DISTRO}-xacro \
27
+ ros-${DISTRO}-rosbag2-storage-mcap \
28
+ ros-${DISTRO}-plotjuggler-ros \
29
+ pipx \
30
+ chrony \
31
+ tmux python3-pip\
32
+ xterm \
33
+ libeigen3-dev \
34
+ nano \
35
+ ros-${DISTRO}-rviz2 \
36
+ nautilus \
37
+ iputils-ping \
38
+ iproute2 \
39
+ python3-rosdep \
40
+ && apt-get clean
41
+ RUN apt-get install -y \
42
+ ros-${DISTRO}-rmw-cyclonedds-cpp \
43
+ && apt-get clean
44
+ RUN apt-get install -y curl lsb-release gnupg
45
+ RUN curl https://packages.osrfoundation.org/gazebo.gpg --output /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg
46
+ RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null
47
+ RUN echo " CURL DONE"
48
+
49
+ RUN sudo apt-get update
50
+ RUN sudo apt-get install -y gz-harmonic
51
+ RUN echo "Ignition Installed"
52
+
53
+ # install
54
+ # Adapt your desired python version here
55
+ # ENV PATH=/opt/openrobots/bin:$PATH
56
+ # ENV PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
57
+ # ENV LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
58
+ # ENV PYTHONPATH=/opt/openrobots/lib/python3.10/site-packages:$PYTHONPATH
59
+ # ENV CMAKE_PREFIX_PATH=/opt/openrobots:$CMAKE_PREFIX_PATH
60
+ # ENV TERM=xterm-256color
61
+
62
+ ENV DEBIAN_FRONTEND=dialog
63
+
64
+ # Create a new user
65
+ ARG USERNAME=ros
66
+ ARG USER_UID=1000
67
+ ARG USER_GID=${USER_UID}
68
+ RUN if id -u ${USER_UID} ; then userdel `id -un ${USER_UID}` ; fi
69
+ RUN groupadd --gid ${USER_GID} ${USERNAME}
70
+ RUN useradd --uid ${USER_UID} --gid ${USER_GID} -m ${USERNAME} \
71
+ && apt-get update \
72
+ && apt-get install -y sudo \
73
+ && echo ${USERNAME} ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/${USERNAME} \
74
+ && chmod 0440 /etc/sudoers.d/${USERNAME}
75
+
76
+ #Change HOME environment variable
77
+ ENV HOME=/home/${USERNAME}
78
+ # Choose to run as user
79
+ ENV USER=${USERNAME}
80
+
81
+ USER ${USERNAME}
82
+
83
+ # ********************************************************
84
+ # * Anything else you want to do like clean up goes here *
85
+ # ********************************************************
86
+
87
+ # Install the python packages cosi non vengono installati da root
88
+ RUN pipx install numpy
89
+ # install gazebo ignition
90
+ # RUN sudo apt-get install -y curl lsb-release gnupg
91
+ # RUN sudo curl https://packages.osrfoundation.org/gazebo.gpg --output /usr/share/keyrings/pkgs-osrf-archive-keyring.gpgecho "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null
92
+ # RUN echo " CURL DONE"
93
+
94
+ # Set up auto-source of workspace for ros user
95
+ ARG WORKSPACE=docker_navigation
96
+ WORKDIR /home/ros/${WORKSPACE}
97
+
98
+ RUN echo "source /opt/ros/${DISTRO}/setup.bash" >> ~/.bashrc
99
+
100
+ RUN echo "if [ -f ~/${WORKSPACE}/install/setup.bash ]; then source ~/${WORKSPACE}/install/setup.bash; fi" >> /home/ros/.bashrc
101
+ RUN echo "export GZ_SIM_SYSTEM_PLUGIN_PATH=/opt/ros/humble/lib/" >> ~/.bashrc
102
+ RUN sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen
103
+ # install gazebo ignition
104
+
105
+
106
+ ENTRYPOINT ["/ros_entrypoint.sh"]
107
+ # RUN echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
108
+ # RUN echo "source /home/ros/ros2_ws/install/setup.bash 2>/dev/null || true" >> ~/.bashrc
0 commit comments