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 ?
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!