Maison > base de données > tutoriel mysql > Comment garantir la préparation de MySQL dans Docker Compose avant de démarrer les services dépendants ?

Comment garantir la préparation de MySQL dans Docker Compose avant de démarrer les services dépendants ?

Barbara Streisand
Libérer: 2024-12-24 13:01:14
original
214 Les gens l'ont consulté

How to Ensure MySQL Readiness in Docker Compose Before Starting Dependent Services?

Vérification de la préparation de la connexion MySQL dans Docker Compose

Dans le domaine des conteneurs Docker, il est crucial de garantir que les applications démarrent uniquement lorsque leurs dépendances requises sont prêtes. Ceci est particulièrement important pour les bases de données comme MySQL, qui doivent être initialisées et préparées avant d'accepter les connexions.

Dans Docker Compose, les options depend_on et healthcheck fournissent un moyen de contrôler la relation de dépendance entre les conteneurs. L'option depend_on spécifie qu'un conteneur doit attendre que la dépendance spécifiée soit saine avant de démarrer. L'option healthcheck, quant à elle, définit un test rudimentaire pour déterminer l'état de santé d'un conteneur.

Lors de la tentative de validation de la préparation de MySQL, diverses méthodes ont été explorées :

  • Vérifier si le répertoire de la base de données est créé : Bien que la création du répertoire de la base de données soit une étape nécessaire, cela ne garantit pas que MySQL est prêt à accepter connexions.
  • Récupération de la version de MySQL : Ce test fournit des informations sur le serveur MySQL mais n'indique pas s'il est prêt à être utilisé.
  • Pinger l'administrateur MySQL : Cette méthode marque le conteneur comme sain, mais elle peut ne pas refléter avec précision les paramètres de MySQL préparation.

Une solution qui garantit que MySQL est prêt avant de démarrer d'autres conteneurs est la suivante :

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
Copier après la connexion

Dans cette configuration, le conteneur API ne démarrera pas tant que le conteneur db n'est pas sain, qui est déterminé par le test « ping » dans la configuration du contrôle de santé. Le test « ping » vérifie que le serveur MySQL est accessible et peut accepter les connexions, garantissant ainsi que le conteneur API peut démarrer ses opérations en toute sécurité.

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