Vérifier si le service Postgres d'un conteneur Docker est prêt

Publié le 30/08/2020 • Mis à jour le 30/08/2020


English language detected! 🇬🇧

  We noticed that your browser is using English. Do you want to read this post in this language?

Read the english version 🇬🇧 Close

Dans ce bout de code nous allons voir comment attendre que le service Postgres d'un conteneur Docker soit prêt avant de l'utiliser. C'est pour éviter ce genre d'erreurs : An exception occurred in driver: SQLSTATE[08006] [7] server closed the connection unexpectedly. Donc, avant d'utiliser Doctrine pour créer une base de données ou de charger des données de développement, nous allons appeler le script bash suivant (on peut le nommer wait-for-postgres.sh). Il va lancer l'exécutable pg_isready jusqu'à ce qu'il retourne OK. Dans un makefile, il doit être appelé juste après le docker-composer up. Remplacez phpquiz-postgres par le nom de votre conteneur Docker. J'utilise ce script dans le projet phpquiz, jetez un coup d'œil au dépôt public GitHub.


#!/bin/sh
# https://stackoverflow.com/q/46516584/633864
until docker container exec -it phpquiz-postgres pg_isready; do
    >&2 echo "Postgres is unavailable - waiting for it... 😴"
sleep 1
done

 Plus sur Stackoverflow   Lire la doc  Plus sur le web  Snippet aléatoire