58 lines
1.5 KiB
YAML
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 |