Использование docker compose wait для конкретных сервисов
В предыдущем шаге мы использовали docker compose wait для ожидания остановки всех сервисов. В этом шаге мы научимся использовать docker compose wait для ожидания перехода конкретных сервисов в определённое состояние.
Сначала давайте снова запустим наши сервисы с помощью docker-compose up -d. Убедитесь, что находитесь в директории ~/project.
cd ~/project
docker-compose up -d
Проверьте, что оба сервиса работают, используя docker-compose ps.
docker-compose ps
Теперь откройте новое окно терминала или вкладку. Мы будем использовать этот новый терминал для демонстрации ожидания конкретного сервиса.
В новом окне терминала перейдите в директорию ~/project.
cd ~/project
Мы можем указать, для каких именно сервисов нужно ожидать остановку, добавив их имена после команды docker compose wait. Например, чтобы ожидать остановки только сервиса web:
docker compose wait web
Как и в предыдущем шаге, эта команда заблокирует выполнение, так как сервис web в данный момент работает.
Теперь вернитесь в исходное окно терминала. Мы остановим только сервис web. Для этого используем команду docker stop с именем контейнера. Имя контейнера можно узнать с помощью docker ps. Оно будет выглядеть примерно как project-web-1.
cd ~/project
docker stop project-web-1
Замените project-web-1 на фактическое имя контейнера, если оно отличается.
Наблюдайте вывод в исходном окне терминала. Вы увидите сообщение об остановке контейнера web.
Теперь вернитесь в новое окно терминала, где выполнялась команда docker compose wait web. Поскольку сервис web остановлен, команда docker compose wait web завершит свою работу.
Вы должны увидеть возврат командной строки в новом окне терминала. Обратите внимание, что команда docker compose wait web завершилась, несмотря на то что сервис db продолжает работать.
Чтобы убедиться, что сервис db всё ещё работает, вернитесь в исходный терминал и выполните docker-compose ps.
cd ~/project
docker-compose ps
Вы должны увидеть сервис db в состоянии Up, в то время как сервис web либо отсутствует в списке, либо отображается как остановленный.
Наконец, остановим оставшийся сервис db.
cd ~/project
docker-compose down
Вы успешно использовали docker compose wait для ожидания остановки конкретного сервиса.