Skip to main content

Health Status

Der Healthcheck wird bei docker compose zur Prüfung von Abhängigkeiten eingesetzt. Es soll geprüft werden, ob ein bestimmter Dienst zur Verfügung steht.

Fall 1: Server ist abhängig von MySQL

Im folgenden Beispiel ist ein Dienst darauf angewiesen, dass die Datenbank hochgefahren ist.

services:
  server:
    image: your_server_image
    depends_on:
      db: 
        condition: service_healthy # Bedingung unter der der Dienst starten soll
  db:
    image: your_db_image
    healthcheck:
      test: ...         # Command to check health.
      interval: 5s      # Interval between health checks.
      timeout: 5s       # Timeout for each health checking.
      retries: 20       # Hou many times retries.
      start_period: 10s # Estimated time to boot.

Beispiel für eine Testabfrage

  db:
    image: mysql:8.0.26
    ports:
      - 3316:3306
    environment:
      MYSQL_DATABASE: yourdb
      MYSQL_ROOT_PASSWORD: pass
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost", "-uroot", "-ppass"]
      interval: 5s
      timeout: 5s
      retries: 20

Mit mysqladmindem MySQL-Server im DB-Container pingen. Dieser läuft lokal.
Das MySQL-Passwort ist das, welches unter environment mit MYSQL_ROOT_PASSWORD angegeben ist.

Fall 2: Server hängt von einem anderen Server ab

Wenn wir mehr als einen Server haben, hängen die Server möglicherweise von anderen ab. Für diesen Fall sollte Self-Ping die einfachste Lösung sein. Für den Server, auf dem der Container ausgeführt wird, localhostund 8080den Port im Container, curlsollte der Befehl zum Ping wie folgt aussehen.

  image_detection:
    image: your_image
    ports:
      - 8082:8080
    healthcheck:
      test: "curl -f localhost:8080"
      interval: 5s
      timeout: 5s
      retries: 20