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!