Jeg havde det samme problem med at køre flyway, da jeg oprettede et docker-billede til min database baseret på postgres:10.5-billedet. Jeg tilføjede følgende til min entrypoint.sh, før jeg kørte flyway, for at bekræfte, at problemet, jeg så, var forårsaget af docker-entrypoint.sh-ændringen, som @Nick Maraston skrev i sit svar:
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
Resultatet var, at ovenstående kode løb for evigt. Jeg erstattede den derefter med følgende kode for at genstarte databasen med at lytte efter TCP/IP-forbindelser på localhost:
pg_ctl -D "$PGDATA" -m fast -w stop
pg_ctl -D "$PGDATA" \
-o "-c listen_addresses='localhost'" \
-w start
I stedet for at genstarte databasen på denne måde, ville en renere løsning være at bruge JDBC -socketFactory
mulighed forklaret her
.