# docker-compose.yml - ROS2 开发容器编排 # # 关键改动(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 build: . image: ros2-humble-dev:latest container_name: ros2_dev # 特权模式(便于系统工具调试) privileged: true stdin_open: true tty: true # 用自定义网络(脱离 docker_default) networks: ros2_net: ipv4_address: 172.20.0.10 # 固定 IP,便于 ROS_STATIC_PEERS environment: # ROS Domain ID(0-232,默认 0) - ROS_DOMAIN_ID=0 # 用 FastDDS 默认(留空) # - RMW_IMPLEMENTATION=rmw_fastrtps_cpp # 容器内 PATH 自动 source ROS2 - RCUTILS_COLORIZED_OUTPUT=1 # bind mount:整个工程挂到 /root/ros2_ws volumes: - ..:/root/ros2_ws working_dir: /root/ros2_ws # 容器长跑(用户 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