確保Docker Compose 應用程式的資料庫已準備好
為了防止過早執行資料庫遷移或應用程式啟動,確保資料庫在應用程式容器啟動其進程之前,容器已完全運作。使用 Docker Compose 的 healthcheck 和 dependent_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 容器將保留處於掛起狀態,直到資料庫容器成功通過健康檢查,表明資料庫完全可操作並準備好連接。這可確保應用程式在資料庫可存取之前不會嘗試執行遷移或開始處理,從而防止潛在問題或資料完整性錯誤。
以上是如何確保我的 Docker Compose 應用程式的資料庫在啟動前準備就緒?的詳細內容。更多資訊請關注PHP中文網其他相關文章!