在Docker 容器領域,確保應用程式僅在其所需的依賴項準備就緒時才啟動至關重要。這對於像 MySQL 這樣的資料庫尤其重要,它們需要在接受連接之前進行初始化和準備。
在 Docker Compose 中,depends_on 和 healthcheck 選項提供了一種控制容器之間依賴關係的方法。 dependent_on 選項指定容器應等到指定的依賴關係正常後再啟動。另一方面,healthcheck 選項定義了一個基本測試來確定容器的健康狀況。
在嘗試驗證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
在啟動其他容器之前確保MyMy就緒的解決方案如下:
在此配置中,直到db 容器啟動後,api容器才會啟動。健康,由健康檢查配置中的“ping”測試確定。 「ping」測試驗證 MySQL 伺服器是否可達並且可以接受連接,確保 api 容器可以安全地啟動其操作。以上是如何在啟動依賴服務之前確保 Docker Compose 中的 MySQL 準備就緒?的詳細內容。更多資訊請關注PHP中文網其他相關文章!