Use docker compose wait com serviços específicos
Na etapa anterior, usamos docker compose wait para esperar que todos os serviços parassem. Nesta etapa, aprenderemos como usar docker compose wait para esperar que serviços específicos atinjam um determinado estado.
Primeiro, vamos iniciar nossos serviços novamente usando docker-compose up -d. Certifique-se de estar no diretório ~/project.
cd ~/project
docker-compose up -d
Verifique se ambos os serviços estão em execução usando docker-compose ps.
docker-compose ps
Agora, abra uma nova janela de terminal ou aba. Usaremos este novo terminal para demonstrar a espera por um serviço específico.
Na nova janela do terminal, navegue até o diretório ~/project.
cd ~/project
Podemos especificar quais serviços esperar, fornecendo seus nomes após o comando docker compose wait. Por exemplo, para esperar apenas que o serviço web pare:
docker compose wait web
Semelhante à etapa anterior, este comando bloqueará porque o serviço web está atualmente em execução.
Agora, volte para sua janela de terminal original. Pararemos apenas o serviço web. Para fazer isso, podemos usar o comando docker stop com o nome do container. Você pode encontrar o nome do container usando docker ps. Provavelmente será algo como project-web-1.
cd ~/project
docker stop project-web-1
Substitua project-web-1 pelo nome real do container, se for diferente.
Observe a saída na janela do terminal original. Você verá uma mensagem indicando que o container web está sendo parado.
Agora, volte para a nova janela do terminal onde você executou docker compose wait web. À medida que o serviço web é parado, o comando docker compose wait web detectará isso e sairá.
Você deve ver o prompt de comando retornar na nova janela do terminal. Observe que o comando docker compose wait web saiu, mesmo que o serviço db ainda esteja em execução.
Para confirmar que o serviço db ainda está em execução, volte para o terminal original e execute docker-compose ps.
cd ~/project
docker-compose ps
Você deve ver o serviço db listado com o estado Up (Em execução), enquanto o serviço web não está mais listado ou mostra um estado parado.
Finalmente, vamos parar o serviço db restante.
cd ~/project
docker-compose down
Você usou com sucesso docker compose wait para bloquear até que um serviço específico parasse.