Сценарий bash неправильно фиксирует код выхода 1 - PullRequest
0 голосов
/ 14 марта 2020

У меня есть скрипт bash, в котором я запускаю docker. Запуск docker завершается неудачно из-за некоторой ошибки, которая существует там, и он ясно говорит exit code 1. Это сценарий, который я должен выполнить команду docker

startContainer(){

  echo "change directory to ..."
  cd "..."

  docker-compose -f ./docker-compose.yml up -d
  if [[ $? -eq 0 ]]; then
      echo "Executed docker-compose successfully on ${HOST_APP_HOME}"
  else
    echo "Failed to start container on ${HOST_APP_HOME}. Failed command:  docker-compose -f ${DOCKER_CONF_FILE} up -d"
    printErrorFinish
  fi
}

Команда docker-compose не выполняется, и она четко печатает это сообщение

 exited with code 1

Но мой сценарий не захватывает его и первое условие (-eq 0) выполняется. Почему он не может зафиксировать эту ошибку и считать ее успешной командой?

1 Ответ

0 голосов
/ 14 марта 2020

Я думаю, что код состояния docker -композиции сам по себе не имеет смысла. Он отвечает за запуск нескольких других контейнеров, и вы видите, что напечатанное состояние существует от одного из контейнеров. Исходя из того, что делает ваш docker -композитный файл, вы можете использовать опцию --exit-code-from, чтобы получить код завершения каждой службы. Вы также можете добавить механизм проверки работоспособности для желаемых служб, чтобы узнать, какая из них работает, а какая нет (служба, которая успешно развернута, не возвращает никакого значения, но может быть проверена с помощью проверки работоспособности).

Вы можете прочитать о --exit-code-from здесь .

Извините, что я не знаю лучшего способа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...