2016-07-14 4 views
4

Возможно ли перезапустить контейнер в сборке докеров, если служба, работающая внутри, возвращает код выхода, отличный от 0? docker-compose.yml опция restart: always не работает таким образом. Есть ли способ решить проблему или это проблема с сервисом, и я должен искать ответ внутри контейнера?docker-compose контейнер перезагрузки, если служба мертва

Я использую supervisord но добавление опции autorestart=true не работает, даже если служба аварии с кодом выхода 255 - RUNNING_PID файл (созданный системой) не удаляется.

Спасибо за любой ответ.

ответ

2

«перезагрузка: всегда» перезапустит контейнер независимо от кода выхода, поэтому даже если код завершения процесса, запущенного внутри контейнера, равен «0». Я использую «restart: on-failure», и он делает именно то, что вы описываете. Он перезапускает контейнер с ненулевым кодом завершения процесса. После того, как процесс завершится и он не перезагрузится, вы можете проверить код выхода, используя «docker-compose ps»

+0

Спасибо за ответ, но мой случай немного отличается - даже если служба выходит с кодом, отличным от 0, контейнер doesn 't показать это (он по-прежнему отмечен как Up in docker-compose ps). – Thomas

+0

ref https://docs.docker.com/compose/compose-file/#restart_policy –

+0

v2 ref https://docs.docker.com/compose/compose-file/compose-file-v2/#restart –

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