Docker ROS自动启动启动文件

问题描述 投票:1回答:1

我开发了一些ROS软件包,我想把软件包放在一个docker容器中,因为一直安装所有的ROS软件包很繁琐。因此,我创建了一个使用基本ROS映像的dockerfile,安装了所有必需的依赖项,复制了我的工作区,在docker容器中构建了工作区,然后获取了所有内容。你可以在这里找到docker文件:

FROM ros:kinetic-ros-base

RUN apt-get update && apt-get install locales
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8

RUN apt-get update && apt-get install -y \
    && rm -rf /var/likb/apt/lists/*

COPY . /catkin_ws/src/
WORKDIR /catkin_ws
RUN /bin/bash -c '. /opt/ros/kinetic/setup.bash; catkin_make'
RUN /bin/bash -c '. /opt/ros/kinetic/setup.bash; source devel/setup.bash'

CMD ["roslaunch", "master_launch sim_perception.launch"]

问题是:当我使用“运行”命令运行docker容器时,docker似乎不知道我采购了我的新ROS工作区,因此它无法自动启动我的启动脚本。如果我使用“run -it bash”作为bash脚本运行docker容器,我可以再次获取我的工作区,然后roslaunch我的.launch文件。

那么有人可以告诉我如何正确编写我的dockerfile所以当我运行容器时我自动启动我的.launch文件?谢谢!

docker dockerfile ros launch
1个回答
0
投票

来自Docker Docs

每个RUN指令都是独立运行的,不会影响下一条指令,所以当你运行最后一行时,没有从ROS中保存PATH。

您首先需要使用.bashrc来源source或所需的每个环境。

您可以将所需的所有内容(源命令和roslaunch命令)包装在sh文件中,然后在最后运行该文件

© www.soinside.com 2019 - 2024. All rights reserved.