Heim >Datenbank >MySQL-Tutorial >Wie kann ich sicherstellen, dass die Datenbank meiner Docker Compose-Anwendung vor dem Start bereit ist?
Sicherstellung der Datenbankbereitschaft für Docker Compose-Anwendungen
Um eine vorzeitige Ausführung von Datenbankmigrationen oder Anwendungsstarts zu verhindern, ist es wichtig sicherzustellen, dass die Datenbank Der Container ist vollständig betriebsbereit, bevor der App-Container seine Prozesse initiiert. Mithilfe der Healthcheck- und depend_on-Optionen von Docker Compose kann ein Mechanismus eingerichtet werden, um die Datenbankkonnektivität zu überprüfen und den App-Start zu verzögern, bis die Datenbank bereit ist.
Im bereitgestellten Beispiel verwendet der Healthcheck für den Datenbankcontainer (db) den mysqladmin Befehl, um den Localhost anzupingen und zu prüfen, ob die Datenbank Verbindungen akzeptiert. Dieser Test stellt sicher, dass die Datenbank nicht nur aktiv, sondern auch zugänglich ist.
Hier ist eine modifizierte Version der bereitgestellten Docker Compose-Datei:
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
Bei dieser Konfiguration bleibt der API-Container erhalten in einem angehaltenen Zustand, bis der Datenbankcontainer die Integritätsprüfung erfolgreich besteht. Dies zeigt an, dass die Datenbank vollständig betriebsbereit und für Verbindungen bereit ist. Dadurch wird sichergestellt, dass die App nicht versucht, Migrationen durchzuführen oder mit der Verarbeitung zu beginnen, bis auf die Datenbank zugegriffen werden kann, wodurch mögliche Probleme oder Datenintegritätsfehler verhindert werden.
Das obige ist der detaillierte Inhalt vonWie kann ich sicherstellen, dass die Datenbank meiner Docker Compose-Anwendung vor dem Start bereit ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!