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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-12-24 13:01:14220ブラウズ

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

Docker Compose での MySQL 接続の準備状況の確認

Docker コンテナの領域では、必要な依存関係の準備ができた場合にのみアプリケーションが起動するようにすることが重要です。これは、接続を受け入れる前に初期化して準備する必要がある MySQL などのデータベースにとって特に重要です。

Docker Compose では、depends_on オプションと healthcheck オプションにより、コンテナ間の依存関係を制御する手段が提供されます。 depend_on オプションは、コンテナーが、指定された依存関係が正常になるまで待機してから開始することを指定します。一方、healthcheck オプションは、コンテナの健全性を判断するための基本的なテストを定義します。

MySQL の準備状況を検証しようとする場合、さまざまな方法が検討されています。

  • データベース ディレクトリが作成されたかどうかの確認: データベース ディレクトリの作成は必要な手順ですが、MySQL が次の準備ができていることを保証するものではありません。接続を受け入れます。
  • MySQL のバージョンの取得: このテストは、MySQL サーバーに関する情報を提供しますが、使用準備ができているかどうかは示しません。
  • MySQL への ping admin: このメソッドはコンテナを正常であるとマークしますが、MySQL の状態を正確に反映していない可能性があります。

他のコンテナを起動する前に MySQL の準備が整っていることを確認するソリューションは次のとおりです。

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 コンテナが起動するまで API コンテナは起動しません。正常。これは、ヘルスチェック設定の「ping」テストによって決定されます。 「ping」テストは、MySQL サーバーが到達可能で接続を受け入れることができることを検証し、API コンテナーが安全に操作を開始できることを確認します。

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

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