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

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

DDD
Libérer: 2024-12-09 15:40:12
original
647 Les gens l'ont consulté

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

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

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

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

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal