Postgresql: ¿Cómo determinar si se está ejecutando el contenedor docker de la base de datos?

En el script de shell de punto de entrada de una imagen de docker, quiero determinar si un contenedor postgresql puede escuchar conexiones. Para mysql utilicé el siguiente fragmento de código:

while ! mysqladmin ping -h"$MOODLE_DB_HOST" -P $MOODLE_DB_PORT --silent; do  echo "Connecting to ${MOODLE_DB_HOST} Failed"  sleep 1done

¿Cómo puedo lograr algo similar usando postgresql?

En el dockerfile, agregue:

RUN apt-get update && apt-get install -f -y postgresql-client

Luego, en el script de punto de entrada, use:

  while ! pg_isready -h ${MOODLE_DB_HOST} -p ${MOODLE_DB_PORT} > /dev/null 2> /dev/null; do    echo "Connecting to ${MOODLE_DB_HOST} Failed"    sleep 1  done

Otro enfoque

Otro enfoque es mediante el uso de netcat:

     for count in {1..100}; do          echo "Pinging mysql database attempt "${count}          if  $(nc -z ${DB_HOST} ${DB_PORT}) ; then            echo "Can connect into database"            break          fi          sleep 5    done

Donde variable ${DB_HOST} contiene el host de la base de datos. ${DB_PORT} contiene el puerto de la base de datos. Thas funciona en la mayoría de las bases de datos (excepto si desea detectar su tipo también cuando se necesita un script personalizado).