2014-01-26 1 views
1

Я не получаю код возврата, которого я ожидаю, при выполнении сценария внутри контейнера Docker с запущенной в нем фоновой задачей.Коды возврата докеров из фоновых команд

Этот пример докер файл освещает проблему:

FROM ubuntu:latest 
MAINTAINER Jakob H. Thomsen ([email protected]) 

RUN echo "#!/bin/bash\nset -e\n\nls/&\nexit 1" > /start_script.sh 
RUN chmod +x /start_script.sh 

Это создает следующий файл /start_script.sh внутри контейнера:

#!/bin/bash 
set -e 

ls/& 
exit 1 

Так работает docker build -t jakob/test . и docker run jakob/test cat /start_script.sh можно было бы ожидать код возврата будет 1 , из-за exit 1. Это не так, это 0, и это почему-то из-за ls/& (если вы удалите эту команду, вы получите ожидаемый код возврата 1).

Итак, мой вопрос: почему ls/& переопределяет код возврата команды exit 1? Я попытался сделать exit 1 для запуска в фоновом режиме, но он не меняет код возврата ...

Как я использую настройку для запуска спецификаций Ruby, я действительно зависим от кода возврата последнего команда, так что я могу сделать, чтобы Docker вернул код возврата последней команды?

Спасибо, и я надеюсь, что вы сможете помочь, так как у меня есть время, чтобы точно определить точную проблему этих «неправильных» кодов возврата.

ответ

Смежные вопросы