Имах същия проблем при стартиране на flyway при създаване на докер изображение за моята база данни въз основа на изображението postgres:10.5. Добавих следното към моя entrypoint.sh преди да изпълня flyway, за да потвърдя, че проблемът, който виждах, е причинен от промяната на docker-entrypoint.sh, публикувана от @Nick Maraston в неговия отговор:
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
Резултатът беше, че горният код зацикли завинаги. След това го замених със следния код, за да рестартирам базата данни, слушаща за TCP/IP връзки на localhost:
pg_ctl -D "$PGDATA" -m fast -w stop
pg_ctl -D "$PGDATA" \
-o "-c listen_addresses='localhost'" \
-w start
Вместо да рестартирате базата данни по този начин, по-чисто решение би било да използвате JDBC -socketFactory
опцията е обяснена тук
.