PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

flyway incapable de se connecter au conteneur postgres dans le script docker-entrypoint-initdb.d

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 .