Код выхода 127 из команд оболочки означает «команда не найдена». .bashrc
исполняемый? Обычно это не так, , вероятно, вы хотите получить его?
source ./home/$USERNAME/.bashrc
Как указал Дэн Фаррел в своем комментарии 1012 *, использование файла в команде RUN
будет действовать только в этой оболочке.
В исходный код .bashrc во время сборки
Если вы хотите, чтобы он имел эффект для последующих команд в сборке, вам нужно запустить их все в одном и том же операторе RUN
. Ниже .bashrc
поставляется в той же оболочке, что и catkin_make
.
RUN . /home/ros/.bashrc && \
cd /home/$USERNAME/catkin_ws && \
catkin_make
Для получения файла .bashrc при запуске контейнера
Что должно произойти, когда контейнер запускается с использованием docker run
, указывается с помощью оператора ENTRYPOINT
. Если вы просто хотите простую подсказку bash, укажите /bin/bash
. Оболочка будет запущена с пользователем, указанным в операторе USER
.
Итак, если вы добавите следующее в конец вашего Dockerfile
USER ros
ENTRYPOINT /bin/bash
Когда кто-то запускает контейнер, используя docker run -it <containerName>
, он попадает в оболочку bash как пользователь ros
. Bash автоматически создаст файл /home/ros/.bashrc
, и все определения внутри будут доступны в оболочке. (Ваш оператор RUN
, содержащий файл .bashrc
, может быть удален