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
Freigeben: 2024-12-09 15:40:12
Original
647 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage