Tôi đã gặp vấn đề tương tự khi chạy flyway khi tạo hình ảnh docker cho cơ sở dữ liệu của mình dựa trên hình ảnh postgres:10.5. Tôi đã thêm thông tin sau vào entrypoint.sh của mình trước khi chạy flyway, để xác nhận rằng vấn đề tôi gặp phải là do thay đổi docker-entrypoint.sh @Nick Maraston đã đăng trong câu trả lời của anh ấy:
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
Kết quả là đoạn mã trên đã lặp lại mãi mãi. Sau đó, tôi đã thay thế nó bằng mã sau để khởi động lại cơ sở dữ liệu đang lắng nghe các kết nối TCP / IP trên localhost:
pg_ctl -D "$PGDATA" -m fast -w stop
pg_ctl -D "$PGDATA" \
-o "-c listen_addresses='localhost'" \
-w start
Thay vì khởi động lại cơ sở dữ liệu như thế này, giải pháp tốt hơn sẽ là sử dụng JDBC -socketFactory
tùy chọn được giải thích tại đây
.