Usar docker compose wait con servicios específicos
En el paso anterior, usamos docker compose wait para esperar que todos los servicios se detuvieran. En este paso, aprenderemos cómo usar docker compose wait para esperar que servicios específicos alcancen un estado determinado.
Primero, iniciemos nuevamente nuestros servicios usando docker-compose up -d. Asegúrate de estar en el directorio ~/project.
cd ~/project
docker-compose up -d
Verifica que ambos servicios estén en ejecución usando docker-compose ps.
docker-compose ps
Ahora, abre una nueva ventana o pestaña de terminal. Usaremos este nuevo terminal para demostrar cómo esperar por un servicio específico.
En la nueva ventana de terminal, navega al directorio ~/project.
cd ~/project
Podemos especificar qué servicios esperar proporcionando sus nombres después del comando docker compose wait. Por ejemplo, para esperar solo que el servicio web se detenga:
docker compose wait web
Similar al paso anterior, este comando se bloqueará porque el servicio web está actualmente en ejecución.
Ahora, regresa a tu ventana de terminal original. Detendremos solo el servicio web. Para hacer esto, podemos usar el comando docker stop con el nombre del contenedor. Puedes encontrar el nombre del contenedor usando docker ps. Probablemente será algo como project-web-1.
cd ~/project
docker stop project-web-1
Reemplaza project-web-1 con el nombre real del contenedor si es diferente.
Observa la salida en la ventana de terminal original. Verás un mensaje indicando que el contenedor web está siendo detenido.
Ahora, vuelve a la nueva ventana de terminal donde ejecutaste docker compose wait web. Como el servicio web se ha detenido, el comando docker compose wait web detectará esto y finalizará.
Deberías ver que el prompt de comandos regresa en la nueva ventana de terminal. Nota que el comando docker compose wait web finalizó aunque el servicio db sigue en ejecución.
Para confirmar que el servicio db sigue en ejecución, regresa al terminal original y ejecuta docker-compose ps.
cd ~/project
docker-compose ps
Deberías ver el servicio db listado con el estado Up, mientras que el servicio web ya no aparece o muestra un estado detenido.
Finalmente, detengamos el servicio db restante.
cd ~/project
docker-compose down
Has utilizado exitosamente docker compose wait para bloquear hasta que un servicio específico se detuviera.