Heim >Datenbank >MySQL-Tutorial >Wie kann die Bereitschaft der MySQL-Verbindung sichergestellt werden, bevor abhängige Dienste in Docker Compose gestartet werden?

Wie kann die Bereitschaft der MySQL-Verbindung sichergestellt werden, bevor abhängige Dienste in Docker Compose gestartet werden?

DDD
DDDOriginal
2024-12-09 15:40:12654Durchsuche

How to Ensure MySQL Connection Readiness Before Starting Dependent Services in Docker Compose?

Docker-Compose: Sicherstellen der MySQL-Verbindungsbereitschaft vor dem Start des Dienstes

In einer Docker-Compose-Umgebung ist es entscheidend, sicherzustellen, dass abhängige Dienste verfügbar sind B. Datenbanken, sind für Verbindungen bereit, bevor andere Dienste, die auf sie angewiesen sind, gestartet werden. Dieser Artikel bietet eine Lösung zum Überprüfen der MySQL-Verbindungsbereitschaft mithilfe der Healthcheck-Option in Docker-Compose Version 2.

Healthcheck-Konfiguration

So richten Sie einen Healthcheck für den MySQL-Container ein , definieren Sie es in der Konfiguration des Containers. Unten finden Sie ein Beispiel für eine Gesundheitsprüfung:

healthcheck:
    test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
    timeout: 20s
    retries: 10

Diese Gesundheitsprüfung verwendet den Befehl mysqladmin ping, um zu überprüfen, ob MySQL ausgeführt wird und Verbindungen akzeptiert. Wenn der Befehl innerhalb der angegebenen Timeout- und Wiederholungsgrenzen erfolgreich zurückgegeben wird, gilt der Container als fehlerfrei.

Abhängig vom fehlerfreien Dienst

Sobald die Gesundheitsprüfung definiert ist, wird der abhängige Dienst (in diesem Fall ein „App“-Container) kann mithilfe der Option depend_on eine Abhängigkeit vom MySQL-Container angeben:

app:
    depends_on:
        db:
            condition: service_healthy

Diese Konfiguration stellt sicher, dass die Der „app“-Container startet nur, wenn der „db“-Container (MySQL) gemäß der definierten Gesundheitsprüfung fehlerfrei ist.

Beispiel-Docker-Compose-Datei

Alles zusammen , hier ist eine Beispiel-Docker-Compose-Datei, die dieses Setup verwendet:

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

Mit dieser Konfiguration wird der „API“-Container erst gestartet Der „db“-Container (MySQL) ist fehlerfrei und akzeptiert Verbindungen, um sicherzustellen, dass die Datenbank bereit ist, bevor die App startet.

Das obige ist der detaillierte Inhalt vonWie kann die Bereitschaft der MySQL-Verbindung sichergestellt werden, bevor abhängige Dienste in Docker Compose gestartet werden?. 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