web-dev-qa-db-ja.com

Postgresql:データベースDockerコンテナーが実行されているかどうかを確認する方法

Dockerイメージのエントリポイントシェルスクリプトで、postgresqlコンテナが接続をリッスンできるかどうかを確認します。 mysqlの場合、次のスニペットを使用しました。

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

Postgresqlを使用して同様の方法を実現するにはどうすればよいですか?

3

Dockerfileに次を追加します。

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

次に、エントリポイントスクリプトで次を使用します。

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

別のアプローチ

別のアプローチは、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

変数${DB_Host}にはデータベースホストが含まれますが、${DB_PORT}にはデータベースポートが含まれます。 Thasはほとんどのデータベースで動作します(カスタムスクリプトが必要な場所でそのタイプを検出する場合を除く)。

1