Postgresql: como determinar se o contêiner do docker do banco de dados está em execução?

No script de Shell entrypoint de uma imagem do docker, quero determinar se um contêiner postgresql pode ouvir conexões. Para mysql eu usei o seguinte snippet:

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

Como posso conseguir um semelhante usando postgresql?

No dockerfile adicionar:

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

Em seguida, no script entrypoint 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

Outra abordagem

Uma outra abordagem é usando 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

Onde variável ${DB_HOST} contém o host do banco de dados enquanto ${DB_PORT} contém a porta do banco de dados. Thas funciona na maioria dos bancos de dados (exceto se você quiser detectar seu tipo também onde um script personalizado é necessário).