Maison > base de données > tutoriel mysql > Comment garantir la préparation de la connexion MySQL dans Docker Compose ?

Comment garantir la préparation de la connexion MySQL dans Docker Compose ?

Patricia Arquette
Libérer: 2024-12-14 11:33:17
original
473 Les gens l'ont consulté

How to Ensure MySQL Connection Readiness in Docker Compose?

Docker-compose : Déterminer l'état de préparation de la connexion MySQL

Dans Docker Compose, garantir la disponibilité d'une connexion à une base de données avant de démarrer un conteneur d'application peut être une étape cruciale dans l’orchestration. Pour y parvenir, les options healthcheck et depend_on offrent une solution pratique.

Cependant, configurer un bilan de santé efficace pour MySQL peut poser des défis. Explorons les approches mentionnées dans la requête et évaluons leurs limites :

  • Vérification de l'existence du répertoire de données MySQL : Bien que cela vérifie la présence des fichiers de la base de données, cela le fait ne garantit pas que MySQL fonctionne et accepte les connexions.
  • Obtention de la version MySQL : Cette approche confirme la présence de MySQL mais quand même n'indique pas que les connexions sont prêtes.
  • Pinger l'administrateur : Cette action marque le conteneur comme sain, mais elle ne garantit pas que la base de données est pleinement opérationnelle et accepte les demandes des clients.

La solution réside dans une commande de contrôle de santé différente :

test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
Copier après la connexion

Cette commande teste directement la disponibilité du serveur MySQL sur le localhost et sert d'indicateur fiable de sa préparation aux connexions. En utilisant cette vérification de l'état, vous pouvez vous assurer que votre conteneur d'application ne démarre qu'une fois MySQL entièrement initialisé et accessible via les connexions réseau.

Dans votre fichier Docker Compose, vous pouvez intégrer cette vérification de l'état comme suit :

services:
    api:
        ...
        depends_on:
          db:
            condition: service_healthy
    db:
        ...
        healthcheck:
            test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
            timeout: 20s
            retries: 10
Copier après la connexion

Avec cette configuration, le conteneur API attendra que la vérification de l'état du conteneur de base de données réussisse avant de démarrer, garantissant que MySQL est prêt à accepter les connexions et minimisant le risque de migrations ou d'applications avant le démarrage. échecs.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal