Использование 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
для ожидания остановки конкретного сервиса.