ホームページ >データベース >mysql チュートリアル >Docker Compose で依存サービスを開始する前に MySQL 接続の準備が整っていることを確認する方法

Docker Compose で依存サービスを開始する前に MySQL 接続の準備が整っていることを確認する方法

DDD
DDDオリジナル
2024-12-09 15:40:12653ブラウズ

How to Ensure MySQL Connection Readiness Before Starting Dependent Services in Docker Compose?

Docker-Compose: サービスの起動前に MySQL 接続の準備が整っていることを確認する

Docker-compose 環境では、依存するサービスがデータベースなどのサービスは、それらに依存する他のサービスが開始される前に接続の準備ができています。この記事では、Docker-compose バージョン 2 の healthcheck オプションを使用して MySQL 接続の準備状況をチェックするためのソリューションを提供します。

Healthcheck 構成

MySQL コンテナーのヘルスチェックを設定するには、コンテナの設定内で定義します。以下はヘルスチェックの例です:

healthcheck:
    test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
    timeout: 20s
    retries: 10

このヘルスチェックは、mysqladmin ping コマンドを使用して、MySQL が実行中で接続を受け入れているかどうかを確認します。指定されたタイムアウトおよび再試行制限内でコマンドが正常に返された場合、コンテナーは正常であると見なされます。

正常なサービスに依存

ヘルスチェックが定義されると、依存するサービスは(この場合、「アプリ」コンテナ) は、depends_on を使用して MySQL コンテナへの依存関係を指定できます。オプション:

app:
    depends_on:
        db:
            condition: service_healthy

この構成により、定義されたヘルスチェックに従って「db」コンテナ (MySQL) が正常な場合にのみ「app」コンテナが起動するようになります。

Docker の例-compose File

すべてをまとめて、これを使用する Docker-compose ファイルの例を次に示します。 setup:

version: "2.1"
services:
    api:
        build: .
        container_name: api
        ports:
            - "8080:8080"
        depends_on:
            db:
                condition: service_healthy
    db:
        container_name: db
        image: mysql
        ports:
            - "3306"
        environment:
            MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
            MYSQL_USER: "user"
            MYSQL_PASSWORD: "password"
            MYSQL_DATABASE: "database"
        healthcheck:
            test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
            timeout: 20s
            retries: 10

この構成では、「db」コンテナ (MySQL) が正常で接続を受け入れ、アプリの起動前にデータベースの準備が整っていることが確認されるまで、「api」コンテナは起動しません。

以上がDocker Compose で依存サービスを開始する前に MySQL 接続の準備が整っていることを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。