Ich hatte das gleiche Problem beim Ausführen von Flyway, als ich ein Docker-Image für meine Datenbank basierend auf dem postgres:10.5-Image erstellte. Ich habe Folgendes zu meiner entrypoint.sh hinzugefügt, bevor ich Flyway ausgeführt habe, um zu bestätigen, dass das Problem, das ich gesehen habe, durch die Änderung von docker-entrypoint.sh verursacht wurde, die @Nick Maraston in seiner Antwort gepostet hat:
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
Das Ergebnis war, dass der obige Code für immer geloopt wurde. Ich habe es dann durch den folgenden Code ersetzt, um die Datenbank neu zu starten, die auf TCP/IP-Verbindungen auf localhost lauscht:
pg_ctl -D "$PGDATA" -m fast -w stop
pg_ctl -D "$PGDATA" \
-o "-c listen_addresses='localhost'" \
-w start
Anstatt die Datenbank auf diese Weise neu zu starten, wäre es eine sauberere Lösung, die JDBC -socketFactory
zu verwenden Option erklärt hier
.