Docker-composer vérifier si la connexion mysql est prête

Je suis en train de faire en sorte que mon application conteneur ne pas exécuter les migrations /start jusqu'à ce que le db conteneur est démarré et PRÊT À accepter les connexions.

J'ai donc décidé d'utiliser le bilan de santé et dépend de l'option dans le panneau de composer fichier v2.

Dans l'application, j'ai le texte suivant

app:
    ...
    depends_on:
      db:
      condition: service_healthy

La db sur l'autre main a la suite de la verification de la santé

db:
  ...
  healthcheck:
    test: TEST_GOES_HERE
    timeout: 20s
    retries: 10

J'ai essayé plusieurs approches :

  1. veillant à la db DIR est créé

    test: ["CMD", "test -f var/lib/mysql/db"]
  2. Obtenir la version de mysql:

    test: ["CMD", "echo 'SELECT version();'| mysql"]
  3. Ping à l'admin (marques de la db conteneur en bonne santé, mais ne semble pas être un test valide)

    test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]

Quelqu'un a une solution à cela?

source d'informationauteur John Kariuki