Проверьте, запущен ли контейнер / служба с помощью docker-compose

  • docker-compose ps -q <service_name> будет отображаться идентификатор контейнера независимо от того, запущен он или нет, до тех пор, пока он был создан.
  • docker ps показывает только те, которые действительно запущены.

Давайте объединим эти две команды:

if [ -z `docker ps -q --no-trunc | grep $(docker-compose ps -q <service_name>)` ]; then  echo "No, it's not running."else  echo "Yes, it's running."fi

docker ps показывает короткую версию идентификаторов по умолчанию, поэтому нам нужно указать --no-trunc флаг.

ОБНОВЛЕНИЕ: Он выдавал предупреждение "использование grep", если служба не была запущена. Благодаря @Dzhuneyt, вот обновленный ответ.

if [ -z `docker-compose ps -q <service_name>` ] || [ -z `docker ps -q --no-trunc | grep $(docker-compose ps -q <service_name>)` ]; then  echo "No, it's not running."else  echo "Yes, it's running."fi