Я разработал несколько ROS-пакетов и хочу поместить их в Docker-контейнер, потому что установка всех ROS-пакетов все время утомительна.Поэтому я создал dockerfile
, который использует базовый образ ROS, установил все необходимые зависимости, скопировал мое рабочее пространство, построил рабочее пространство в контейнере док-станции и впоследствии получил все.Вы можете найти файл 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 с помощью команды «run», Docker, похоже, не знает, что я получил свое новое рабочее пространство ROS и, следовательно,он не может автоматически запустить мой скрипт запуска.Если я запускаю docker-контейнер как bash-скрипт с помощью команды «run -it bash», я снова могу получить исходную рабочую область, а затем roslaunch
мой .launch
файл.
Так может ли кто-нибудь сказать мне, как правильно написать мой dockerfile
, чтобы я автоматически запускал файл .launch
при запуске контейнера?Спасибо!