ホームページ >データベース >mysql チュートリアル >Docker Compose アプリケーションのデータベースの準備が起動前に完了していることを確認するにはどうすればよいですか?

Docker Compose アプリケーションのデータベースの準備が起動前に完了していることを確認するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-11 15:23:11419ブラウズ

How Can I Ensure My Docker Compose Application's Database is Ready Before Startup?

Docker Compose アプリケーションのデータベースの準備を確保する

データベースの移行やアプリケーションの起動が時期尚早に実行されるのを防ぐには、データベースがアプリコンテナがプロセスを開始する前に、コンテナは完全に動作可能になります。 Docker Compose の healthcheck および depend_on オプションを使用すると、データベースの接続を確認し、データベースの準備ができるまでアプリの起動を遅らせるメカニズムを確立できます。

提供された例では、データベース コンテナー (db) のヘルスチェックは mysqladmin を利用します。コマンドを使用してローカルホストに ping を実行し、データベースが接続を受け入れているかどうかを確認します。このテストでは、データベースが稼働しているだけでなく、アクセス可能であることも確認します。

提供された Docker Compose ファイルの修正バージョンは次のとおりです:

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

この構成では、API コンテナーは残ります。 DB コンテナが正常にヘルスチェックに合格し、データベースが完全に動作し、接続の準備ができていることが示されるまで、一時停止状態になります。これにより、データベースにアクセスできるようになるまでアプリは移行や処理の開始を試みなくなり、潜在的な問題やデータ整合性エラーが防止されます。

以上がDocker Compose アプリケーションのデータベースの準備が起動前に完了していることを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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