Docker-Compose : Assurer la préparation de la connexion MySQL avant le démarrage du service
Dans un environnement Docker-compose, il est crucial de s'assurer que les services dépendants , tels que les bases de données, sont prêts pour les connexions avant le démarrage des autres services qui en dépendent. Cet article fournit une solution pour vérifier l'état de préparation de la connexion MySQL à l'aide de l'option de contrôle de santé dans Docker-compose version 2.
Configuration du contrôle de santé
Pour configurer un contrôle de santé pour le conteneur MySQL , définissez-le dans la configuration du conteneur. Vous trouverez ci-dessous un exemple de contrôle de santé :
healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] timeout: 20s retries: 10
Ce contrôle de santé utilise la commande mysqladmin ping pour vérifier si MySQL est en cours d'exécution et accepte les connexions. Si la commande est renvoyée avec succès dans les limites de délai d'attente et de nouvelle tentative spécifiées, le conteneur est considéré comme sain.
En fonction du service sain
Une fois le contrôle de santé défini, le service dépendant (dans ce cas, un conteneur "app") peut spécifier une dépendance sur le conteneur MySQL à l'aide de l'option depend_on :
app: depends_on: db: condition: service_healthy
Cette configuration garantit que le Le conteneur "app" ne démarre que si le conteneur "db" (MySQL) est sain selon le contrôle de santé défini.
Exemple de fichier Docker-compose
Rassembler le tout , voici un exemple de fichier Docker-compose qui utilise cette configuration :
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
Avec cette configuration, le conteneur "api" ne sera pas démarrez jusqu'à ce que le conteneur "db" (MySQL) soit sain et accepte les connexions, garantissant que la base de données est prête avant le démarrage de l'application.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!