1- ARG ROS_DISTRO=iron
1+ ARG ROS_DISTRO=jazzy
22FROM ros:$ROS_DISTRO-ros-base as ci
33
44ENV DEBIAN_FRONTEND=noninteractive
@@ -16,11 +16,9 @@ RUN apt-get -q update \
1616 git \
1717 sudo \
1818 clang \
19- clang-format-14 \
20- clang-tidy \
21- clang-tools \
2219 python3-pip \
2320 python3-dev \
21+ python3-venv \
2422 apt-utils \
2523 software-properties-common \
2624 && apt-get autoremove -y \
@@ -39,28 +37,33 @@ RUN apt-get -q update \
3937
4038FROM ci as robot
4139
42- # Configure a new non-root user
43- ARG USERNAME=ros
40+ ENV DEBIAN_FRONTEND=noninteractive
41+
42+ # Configure the ubuntu non-root user
43+ ARG USERNAME=ubuntu
4444ARG USER_UID=1000
4545ARG USER_GID=$USER_UID
4646
47- RUN groupadd --gid $USER_GID $USERNAME \
48- && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \
49- && echo $USERNAME ALL=\( root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
47+ RUN echo $USERNAME ALL=\( root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
5048 && chmod 0440 /etc/sudoers.d/$USERNAME \
51- && usermod -a -G dialout $USERNAME \
52- && echo "source /usr/share/bash-completion/completions/git" >> /home/$USERNAME/.bashrc
49+ && usermod -a -G dialout $USERNAME
5350
54- # Switch to the non-root user
51+ # Switch to the ubuntu non-root user
5552USER $USERNAME
5653ENV USER=$USERNAME
5754
58- ENV DEBIAN_FRONTEND=noninteractive
5955ENV USER_WORKSPACE=/home/$USERNAME/ws_ros
6056WORKDIR $USER_WORKSPACE
6157
6258COPY --chown=$USER_UID:$USER_GID . src/$PROJECT_NAME
6359
60+ # Create a new virtual environment for Python
61+ ENV VIRTUAL_ENV=$USER_WORKSPACE/.venv/$PROJECT_NAME
62+ RUN python3 -m venv --system-site-packages $VIRTUAL_ENV \
63+ && echo "source ${VIRTUAL_ENV}/bin/activate" >> /home/$USERNAME/.bashrc \
64+ && touch .venv/COLCON_IGNORE
65+ ENV PATH="$VIRTUAL_ENV/bin:$PATH"
66+
6467# Uncomment to download and install external repos used by the project
6568# RUN vcs import src < src/$PROJECT_NAME/ros2.repos
6669
@@ -69,7 +72,7 @@ WORKDIR $USER_WORKSPACE
6972RUN sudo apt-get -q update \
7073 && sudo apt-get -q -y upgrade \
7174 && rosdep update \
72- && rosdep install -y --from-paths src --ignore-src -r - -rosdistro ${ROS_DISTRO} \
75+ && rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} \
7376 && sudo apt-get autoremove -y \
7477 && sudo apt-get clean -y \
7578 && sudo rm -rf /var/lib/apt/lists/*
@@ -85,29 +88,11 @@ ENV DEBIAN_FRONTEND=noninteractive
8588ENV USER_WORKSPACE=/home/$USERNAME/ws_ros
8689WORKDIR $USER_WORKSPACE
8790
88- # Install tools needed for Gazebo installation
91+ # Install Gazebo
8992RUN sudo apt-get -q update \
9093 && sudo apt-get -q -y upgrade \
9194 && sudo apt-get install -y \
92- lsb-release \
93- wget \
94- gnupg \
95- && sudo apt-get autoremove -y \
96- && sudo apt-get clean -y \
97- && sudo rm -rf /var/lib/apt/lists/*
98-
99- # Set to the desired version of Gazebo
100- # Refer to the official documentation for the recommended pairings:
101- # https://gazebosim.org/docs/harmonic/ros_installation
102- ENV GAZEBO_VERSION=harmonic
103-
104- RUN sudo wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg \
105- && 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 \
106- && sudo apt-get -q update \
107- && sudo apt-get -q -y upgrade \
108- && sudo apt-get install -y \
109- gz-$GAZEBO_VERSION \
110- ros-$ROS_DISTRO-ros-gz$GAZEBO_VERSION \
95+ ros-$ROS_DISTRO-ros-gz \
11196 && sudo apt-get autoremove -y \
11297 && sudo apt-get clean -y \
11398 && sudo rm -rf /var/lib/apt/lists/*
0 commit comments