Ik had hetzelfde probleem met het uitvoeren van flyway bij het maken van een docker-afbeelding voor mijn database op basis van de postgres:10.5-afbeelding. Ik heb het volgende aan mijn entrypoint.sh toegevoegd voordat ik flyway uitvoerde, om te bevestigen dat het probleem dat ik zag werd veroorzaakt door de docker-entrypoint.sh-wijziging die @Nick Maraston in zijn antwoord plaatste:
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
Het resultaat was dat de bovenstaande code voor altijd doorliep. Ik heb het toen vervangen door de volgende code om de database opnieuw te starten en te luisteren naar TCP/IP-verbindingen op localhost:
pg_ctl -D "$PGDATA" -m fast -w stop
pg_ctl -D "$PGDATA" \
-o "-c listen_addresses='localhost'" \
-w start
In plaats van de database op deze manier opnieuw op te starten, zou een schonere oplossing zijn om de JDBC -socketFactory
te gebruiken optie uitgelegd hier
.