Я не получаю код возврата, которого я ожидаю, при выполнении сценария внутри контейнера 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 вернул код возврата последней команды?
Спасибо, и я надеюсь, что вы сможете помочь, так как у меня есть время, чтобы точно определить точную проблему этих «неправильных» кодов возврата.