Docker Composeのバージョン2.1のファイルフォーマットが作成して以来、healthcheckパラメータが導入されました。 これにより、サービスのコンテナが「healthy」(正常)であるかどうかを判断するためのチェックを構成できます。
これは一般的な問題であり、以前のバージョンのdocker-composeではwait-for-itやdockerizeなどのツールやスクリプトを使用する必要があります。
healthcheck
パラメータを使うと、これらのツールやスクリプトの使用はもはや必要ではないことがよくあります。
特によく使用されるケースは、PostgreSQLなどのデータベースに依存するサービスです。 PostgreSQLコンテナが起動し、リクエストを受け入れる準備ができたら続行するという設定ができます。
以下の例では、pg_isready
コマンドを使用してPostgreSQLが使用可能かどうかを定期的にチェックするように設定されています。pg_isready
コマンドの参照
healthcheck:
test: ["CMD-SHELL", "pg_isready"]
interval: 10s
timeout: 5s
retries: 5
チェックが成功すると、コンテナは「正常」となります。それまでは、unhealthy
(障害)にとどまります。
healthcheckパラメータ interval
、 timeout
、 retries
の詳細については、ドキュメンテーションを参照してください。
それで、PostgreSQLに依存するサービスは depends_on
パラメータで設定することができます。
depends_on:
postgres-database:
condition: service_healthy
この完全な例では docker-composeがオープンソースのAPIゲートウェイであるKongを起動する前にPostgreSQLが「healthy」(正常)になるまで待機します。 また、もう一つの一時的なコンテナがKongのデータベース移行プロセスを完了するのを待ちます。
以下のようにテストします:
docker-compose up -d
全サービスが実行されるまで待ちます:
Kongの管理エンドポイントをクエリしてテストします:
curl http://localhost:8001/
MIT ライセンス - 詳細についてはLICENSEファイルを見てください