ホームページ >データベース >mysql チュートリアル >Docker Compose アプリケーションのデータベースの準備が起動前に完了していることを確認するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。