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 是否正在執行並接受連線。如果命令在指定的逾時和重試限制內成功返回,則容器被認為是健康的。
依賴健康服務
定義健康檢查後,依賴的服務(在本例中為「app」容器)可以使用depends_on指定對MySQL容器的依賴關係選項:
app: depends_on: db: condition: service_healthy
此組態可確保僅當「db」容器(MySQL)當根據定義的運作狀況檢查運作正常時,「app」容器才會啟動。
範例 Docker -compose 檔案
將它們放在一起,這裡是一個使用此的範例 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
使用此配置,「api」容器將不會啟動,直到「db」容器(MySQL)運作正常並接受連接,確保資料庫在應用程式啟動之前準備就緒。
以上是在 Docker Compose 中啟動依賴服務之前如何確保 MySQL 連線就緒?的詳細內容。更多資訊請關注PHP中文網其他相關文章!