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