Heim >Datenbank >MySQL-Tutorial >Wie kann ich sicherstellen, dass die Datenbank meiner Docker Compose-Anwendung vor dem Start bereit ist?

Wie kann ich sicherstellen, dass die Datenbank meiner Docker Compose-Anwendung vor dem Start bereit ist?

DDD
DDDOriginal
2024-12-11 15:23:11497Durchsuche

How Can I Ensure My Docker Compose Application's Database is Ready Before Startup?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn