J'ai eu le même problème lors de l'exécution de flyway lors de la création d'une image docker pour ma base de données basée sur l'image postgres:10.5. J'ai ajouté ce qui suit à mon entrypoint.sh avant d'exécuter flyway, pour confirmer que le problème que je voyais était causé par le changement docker-entrypoint.sh que @Nick Maraston a posté dans sa réponse :
echo "$(date) - waiting for database to start"
while ! pg_isready -h localhost -p 5432 -d $POSTGRES_DB
do
echo "$(date) - waiting for database to start"
sleep 10
done
Le résultat était que le code ci-dessus tournait en boucle pour toujours. Je l'ai ensuite remplacé par le code suivant pour redémarrer la base de données à l'écoute des connexions TCP/IP sur localhost :
pg_ctl -D "$PGDATA" -m fast -w stop
pg_ctl -D "$PGDATA" \
-o "-c listen_addresses='localhost'" \
-w start
Plutôt que de redémarrer la base de données comme ça, une solution plus propre serait d'utiliser le JDBC -socketFactory
option expliquée ici
.