Maison > base de données > tutoriel mysql > Comment puis-je m'assurer que la base de données de mon application Docker Compose est prête avant le démarrage ?

Comment puis-je m'assurer que la base de données de mon application Docker Compose est prête avant le démarrage ?

DDD
Libérer: 2024-12-11 15:23:11
original
418 Les gens l'ont consulté

How Can I Ensure My Docker Compose Application's Database is Ready Before Startup?

Assurer la préparation de la base de données pour les applications Docker Compose

Pour éviter l'exécution prématurée des migrations de bases de données ou le démarrage des applications, il est crucial de s'assurer que la base de données Le conteneur est pleinement opérationnel avant que le conteneur d'application ne lance ses processus. À l'aide des options healthcheck et depend_on de Docker Compose, un mécanisme peut être établi pour vérifier la connectivité de la base de données et retarder le démarrage de l'application jusqu'à ce que la base de données soit prête.

Dans l'exemple fourni, la vérification de l'état du conteneur de base de données (db) utilise mysqladmin commande pour cingler l'hôte local et vérifier si la base de données accepte les connexions. Ce test garantit que la base de données est non seulement opérationnelle mais également accessible.

Voici une version modifiée du fichier Docker Compose fourni :

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 restera dans un état suspendu jusqu'à ce que le conteneur de base de données réussisse le contrôle de santé, indiquant que la base de données est pleinement opérationnelle et prête pour les connexions. Cela garantit que l'application ne tentera pas d'effectuer des migrations ou de démarrer le traitement tant que la base de données ne sera pas accessible, évitant ainsi des problèmes potentiels ou des erreurs d'intégrité des données.

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