init: ROS2 learning suite
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# =============================================================================
|
||||
# Dockerfile —— ROS2 Humble 开发环境的镜像定义。
|
||||
#
|
||||
# 基础镜像:osrf/ros:humble-desktop
|
||||
# 这是 OSRF(Robotis/Open Source Robotics Foundation)官方维护的 ROS2
|
||||
# 桌面版镜像,内含:
|
||||
# - ROS2 Humble 完整运行时(rclcpp/rclpy/ros2 CLI/DDS 默认 fastdds)
|
||||
# - rviz2 / rqt / gazebo 等桌面工具
|
||||
# - colcon / rosdep 等构建工具
|
||||
#
|
||||
# 在它之上我们再加:
|
||||
# - python3-colcon-common-extensions:colcon 的 Python 插件
|
||||
# - python3-pip + colcon-argcomplete :命令补全 (Ros2 CLI tab 补全)
|
||||
# - nano / curl :调试常用工具
|
||||
# =============================================================================
|
||||
|
||||
# FROM:基础镜像。也可选 osrf/ros:humble-desktop-full 或 ros:humble-ros-base。
|
||||
FROM osrf/ros:humble-desktop
|
||||
|
||||
# DEBIAN_FRONTEND=noninteractive:
|
||||
# 容器里 apt 不再弹出交互式提示,CI/Docker 必备。
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
# ROS_DISTRO:环境里 source /opt/ros/<distro>/setup.bash 时用到的版本标记。
|
||||
ENV ROS_DISTRO=humble
|
||||
# WORKSPACE:容器内统一的工作空间根目录。
|
||||
ENV WORKSPACE=/root/ros2_ws
|
||||
|
||||
# RUN apt-get update && install ...:
|
||||
# 一次性安装 colcon / pip / nano / curl。
|
||||
# --no-install-recommends 可减小体积,这里为了图片完整不解开。
|
||||
# 最后清理 /var/lib/apt/lists/* 以减小镜像层大小。
|
||||
RUN apt-get update && apt-get install -y \
|
||||
python3-colcon-common-extensions \
|
||||
python3-pip \
|
||||
nano \
|
||||
curl \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# pip 升级 colcon-argcomplete,提供 ros2 / colcon 命令的 Bash 自动补全。
|
||||
RUN pip3 install -U colcon-argcomplete colcon-common-extensions
|
||||
|
||||
# 写 ~/.bashrc:每次 bash 启动自动 source ROS2 + colcon 补全。
|
||||
RUN echo 'source /opt/ros/humble/setup.bash' >> /root/.bashrc && \
|
||||
echo 'source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash' >> /root/.bashrc
|
||||
|
||||
# WORKDIR:之后所有 RUN / CMD 默认在此目录下执行;同时 docker exec 默认落在这里。
|
||||
WORKDIR ${WORKSPACE}
|
||||
|
||||
# 默认命令:起 bash。docker exec 会覆盖,所以这里只用于 `docker run` 场景。
|
||||
CMD ["bash"]
|
||||
Reference in New Issue
Block a user