ホームページ >データベース >mysql チュートリアル >Docker Compose で依存サービスを開始する前に MySQL 接続の準備が整っていることを確認する方法
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 サイトの他の関連記事を参照してください。