Files
ROS2_learn/docker/docker-compose.yml

58 lines
1.5 KiB
YAML

# 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