45 lines
1.8 KiB
YAML
45 lines
1.8 KiB
YAML
# =============================================================================
|
|
# docker-compose.yml —— 用 docker-compose 编排 ROS2 开发容器。
|
|
#
|
|
# 与裸 docker run 相比,docker-compose 提供:
|
|
# - YAML 声明式配置(易读、易版本管理)
|
|
# - 一键 build / up / down / logs
|
|
# - 多服务依赖、网络、卷的统一管理
|
|
# =============================================================================
|
|
services:
|
|
ros2:
|
|
# build: 用同目录的 Dockerfile 构建镜像。
|
|
# image: 同时打标签,后续 docker-compose down 不会丢镜像。
|
|
build: .
|
|
image: ros2-humble-dev:latest
|
|
container_name: ros2_dev
|
|
|
|
# privileged: 特权模式,便于以后调系统工具(默认足够,不必开)。
|
|
privileged: true
|
|
# stdin_open + tty:docker exec -it 时能获得交互式 shell。
|
|
stdin_open: true
|
|
tty: true
|
|
|
|
# network_mode: host —— 让容器使用主机网络栈。
|
|
# 重要:DDS 默认走 UDP 多播,跨容器/跨主机时必须可见;
|
|
# host 网络让多容器间直接互见,适合单机多机的快速调试。
|
|
network_mode: host
|
|
|
|
environment:
|
|
# ROS_DOMAIN ID:0~232(默认 0);同一 ID 的节点互相可见,
|
|
# 同一机器多项目互不干扰时给每个项目不同 ID。
|
|
- ROS_DOMAIN_ID=0
|
|
# RMW 留空,使用 ROS2 Humble 默认的 rmw_fastrtps_cpp;
|
|
# 若要切换到 Cyclone DDS,需先在镜像内 apt install ros-humble-rmw-cyclonedds-cpp。
|
|
|
|
# 关键卷挂载:把宿主的整个 ros2 工程(上一级目录) 挂到容器 /root/ros2_ws,
|
|
# 改动代码即时同步,容器内 colcon build 即可生效。
|
|
volumes:
|
|
- ..:/root/ros2_ws
|
|
|
|
working_dir: /root/ros2_ws
|
|
|
|
# 容器内默认命令:tail -f /dev/null 让容器"挂起不死",
|
|
# 用户再 docker exec 进去手动开发。
|
|
command: ["bash", "-lc", "tail -f /dev/null"]
|