feat(level1): ROS2 完全体 12 包 / 80 测试 / 23 文档 / 工程化 / Docker 分组
This commit is contained in:
+37
-23
@@ -1,44 +1,58 @@
|
||||
# =============================================================================
|
||||
# docker-compose.yml —— 用 docker-compose 编排 ROS2 开发容器。
|
||||
# docker-compose.yml - ROS2 开发容器编排
|
||||
#
|
||||
# 与裸 docker run 相比,docker-compose 提供:
|
||||
# - YAML 声明式配置(易读、易版本管理)
|
||||
# - 一键 build / up / down / logs
|
||||
# - 多服务依赖、网络、卷的统一管理
|
||||
# =============================================================================
|
||||
# 关键改动(vs 原版):
|
||||
# 1. 加 `name: ros2` —— 独立 compose project,脱离默认 `docker` 分组
|
||||
# 2. 用 `networks: ros2_net`(自定义 bridge)替代 host network
|
||||
# - 便于跨机器部署时统一 IP 段
|
||||
# - 与系统 docker_default 隔离,不让 ROS 节点被无关容器发现
|
||||
#
|
||||
# 使用:
|
||||
# docker compose -p ros2 -f docker/docker-compose.yml build
|
||||
# docker compose -p ros2 -f docker/docker-compose.yml up -d
|
||||
# docker compose -p ros2 -f docker/docker-compose.yml down
|
||||
|
||||
name: ros2
|
||||
|
||||
services:
|
||||
ros2:
|
||||
# build: 用同目录的 Dockerfile 构建镜像。
|
||||
# image: 同时打标签,后续 docker-compose down 不会丢镜像。
|
||||
# build: 同目录 Dockerfile
|
||||
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
|
||||
# 用自定义网络(脱离 docker_default)
|
||||
networks:
|
||||
ros2_net:
|
||||
ipv4_address: 172.20.0.10 # 固定 IP,便于 ROS_STATIC_PEERS
|
||||
|
||||
environment:
|
||||
# ROS_DOMAIN ID:0~232(默认 0);同一 ID 的节点互相可见,
|
||||
# 同一机器多项目互不干扰时给每个项目不同 ID。
|
||||
# ROS Domain ID(0-232,默认 0)
|
||||
- ROS_DOMAIN_ID=0
|
||||
# RMW 留空,使用 ROS2 Humble 默认的 rmw_fastrtps_cpp;
|
||||
# 若要切换到 Cyclone DDS,需先在镜像内 apt install ros-humble-rmw-cyclonedds-cpp。
|
||||
# 用 FastDDS 默认(留空)
|
||||
# - RMW_IMPLEMENTATION=rmw_fastrtps_cpp
|
||||
|
||||
# 关键卷挂载:把宿主的整个 ros2 工程(上一级目录) 挂到容器 /root/ros2_ws,
|
||||
# 改动代码即时同步,容器内 colcon build 即可生效。
|
||||
# 容器内 PATH 自动 source ROS2
|
||||
- RCUTILS_COLORIZED_OUTPUT=1
|
||||
|
||||
# bind mount:整个工程挂到 /root/ros2_ws
|
||||
volumes:
|
||||
- ..:/root/ros2_ws
|
||||
|
||||
working_dir: /root/ros2_ws
|
||||
|
||||
# 容器内默认命令:tail -f /dev/null 让容器"挂起不死",
|
||||
# 用户再 docker exec 进去手动开发。
|
||||
# 容器长跑(用户 exec 进去)
|
||||
command: ["bash", "-lc", "tail -f /dev/null"]
|
||||
|
||||
# 自定义网络(脱离 docker_default)
|
||||
networks:
|
||||
ros2_net:
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.20.0.0/24
|
||||
gateway: 172.20.0.1
|
||||
Reference in New Issue
Block a user