FROM ros:jazzy # Create the workspace and copy all source directories into it WORKDIR /ros2_ws COPY . /ros2_ws/src/ # Stage any dual ROS1/ROS2 packages (e.g. livox_ros_driver2) for ROS2 without # modifying their upstream source: generate package.xml from package_ROS2.xml so # colcon can discover them. The ROS2 build is selected via -DROS_EDITION below. # RUN for d in $(find /ros2_ws/src -type f -name package_ROS2.xml -exec dirname {} \;); do \ # cp -f "$d/package_ROS2.xml" "$d/package.xml"; \ # done # Install dependencies with rosdep RUN apt-get update && \ rosdep update && \ rosdep install --from-paths src --ignore-src -r -y && \ rm -rf /var/lib/apt/lists/* # Build the workspace with symlink install RUN . /opt/ros/jazzy/setup.sh && \ colcon build --symlink-install \ --cmake-args -DROS_EDITION=ROS2 -DDISTRO_ROS=jazzy # Source the overlay on container startup RUN echo "source /opt/ros/jazzy/setup.bash" >> /root/.bashrc && \ echo "source /ros2_ws/install/setup.bash" >> /root/.bashrc CMD ["bash"]