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
DDDoriginal
2024-12-11 15:23:11419parcourir

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

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!

Déclaration:
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