# =============================================================================
# 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"]
