# Use the official ROS 2 Humble Desktop image for Ubuntu 22.04 FROM osrf/ros:humble-desktop # Set environment variables to avoid interactive prompts ENV DEBIAN_FRONTEND=noninteractive ENV TZ=UTC # Install essential tools and dependencies RUN apt-get update && apt-get install -y \ git \ wget \ curl \ python3-pip \ software-properties-common \ tmux \ neovim \ ros-dev-tools \ && rm -rf /var/lib/apt/lists/* # Install Python packages for ROS 2 development RUN pip3 install --no-cache-dir setuptools colcon-common-extensions # Install additional ROS 2 packages (customize as needed) RUN apt-get update && apt-get install -y \ ros-humble-rqt* \ ros-humble-xacro \ ros-humble-joint-state-publisher-gui \ ros-humble-gazebo-ros-pkgs \ ros-humble-tf2-tools \ && rm -rf /var/lib/apt/lists/* # Create a non-root user for security RUN useradd -m -G sudo -s /bin/bash rosuser && \ echo "rosuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers # Switch to the non-root user USER rosuser WORKDIR /home/rosuser # Set up the ROS 2 environment RUN echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc # Entrypoint script to initialize the environment COPY entrypoint.sh /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] CMD ["bash"]