Skip to content

Latest commit

 

History

History
56 lines (41 loc) · 3.18 KB

README_JP.md

File metadata and controls

56 lines (41 loc) · 3.18 KB

docker-compose-healthcheck

Actions Status

Docker Composeのバージョン2.1のファイルフォーマットが作成して以来、healthcheckパラメータが導入されました。 これにより、サービスのコンテナが「healthy」(正常)であるかどうかを判断するためのチェックを構成できます。

コンテナYを開始する前にコンテナXが正常になるまで待機する方法は?

これは一般的な問題であり、以前のバージョンのdocker-composeではwait-for-itdockerizeなどのツールやスクリプトを使用する必要があります。 healthcheckパラメータを使うと、これらのツールやスクリプトの使用はもはや必要ではないことがよくあります。

PostgreSQLが「healthy」(正常)になるまで待機する方法

特によく使用されるケースは、PostgreSQLなどのデータベースに依存するサービスです。 PostgreSQLコンテナが起動し、リクエストを受け入れる準備ができたら続行するという設定ができます。

以下の例では、pg_isreadyコマンドを使用してPostgreSQLが使用可能かどうかを定期的にチェックするように設定されています。pg_isreadyコマンドの参照

healthcheck:
  test: ["CMD-SHELL", "pg_isready"]
  interval: 10s
  timeout: 5s
  retries: 5

チェックが成功すると、コンテナは「正常」となります。それまでは、unhealthy(障害)にとどまります。 healthcheckパラメータ interval timeoutretriesの詳細については、ドキュメンテーションを参照してください。

それで、PostgreSQLに依存するサービスは depends_onパラメータで設定することができます。

depends_on:
  postgres-database:
    condition: service_healthy

Kongを開始する前にPostgreSQLが正常になるまで待機

この完全な例では docker-composeがオープンソースのAPIゲートウェイであるKongを起動する前にPostgreSQLが「healthy」(正常)になるまで待機します。 また、もう一つの一時的なコンテナがKongのデータベース移行プロセスを完了するのを待ちます。

以下のようにテストします:

docker-compose up -d

全サービスが実行されるまで待ちます:

Demo

Kongの管理エンドポイントをクエリしてテストします:

curl http://localhost:8001/

ライセンス

MIT ライセンス - 詳細についてはLICENSEファイルを見てください