Игнорировать выход из контейнера при использовании docker-compose

Я настраиваю тестовую инфраструктуру с помощью docker-compose. Я хочу использовать параметр docker-compose --exit-code-from, чтобы вернуть код выхода из контейнера, в котором выполняются тесты. Однако у меня также есть контейнер, который выполняет миграции в контейнере моей базы данных с помощью sequelize cli. Этот контейнер миграции выходит с кодом 0, когда миграции завершаются, а затем запускаются мои тесты. Это вызывает проблемы с параметрами --exit-code-from и --abort-on-container-exit. Есть ли способ игнорировать, когда контейнер миграции выходит?


person Max Paymar    schedule 14.10.2018    source источник


Ответы (1)


--exit-code-from означает --abort-on-container-exit, что согласно документации

--abort-on-container-exit Останавливает все контейнеры, если какой-либо из них был остановлен.

Но вы можете попробовать:

docker inspect <container ID> --format='{{.State.ExitCode}}'

Вы можете получить список всех (включая остановленных) контейнеров с помощью

docker container ls -a

Вот хороший пример: Проверка кода выхода остановленных контейнеров

person hjsimpson    schedule 14.10.2018
comment
Спасибо - на данный момент я закончил запускать tail -f / dev / null после запуска миграции, но это кажется лучшим решением - person Max Paymar; 15.10.2018
comment
Другая идея может заключаться в использовании службы инициализации / управления процессом, например supervisord.org, чтобы поддерживать контейнер миграции в рабочем состоянии после завершения внутренней работы. Хотя не уверен, что это хорошее решение для вас, это может быть слишком много накладных расходов. Но если вы еще этого не сделали, обратите внимание на supervisord, особенно если вы планируете запускать несколько процессов в одном контейнере. - person hjsimpson; 15.10.2018
comment
Попробуйте sleep 300 в конце миграции или временного контейнера, это гарантирует, что тест завершится неудачно через 5 минут, так как он завершится и будет обнаружен --abort-on-container-exit. - person jnovack; 27.08.2020