PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

flyway nie może połączyć się z kontenerem postgres w skrypcie docker-entrypoint-initdb.d

Miałem ten sam problem z uruchomieniem flywaya podczas tworzenia obrazu dockera dla mojej bazy danych na podstawie obrazu postgres:10.5. Dodałem następujący plik do mojego entrypoint.sh przed uruchomieniem flyway, aby potwierdzić, że problem, który widziałem, był spowodowany zmianą docker-entrypoint.sh, którą @Nick Maraston opublikował w swojej odpowiedzi:

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

W rezultacie powyższy kod zapętlił się na zawsze. Następnie zastąpiłem go następującym kodem, aby ponownie uruchomić bazę danych nasłuchującą połączeń TCP/IP na hoście lokalnym:

pg_ctl -D "$PGDATA" -m fast -w stop
pg_ctl -D "$PGDATA" \
            -o "-c listen_addresses='localhost'" \
            -w start

Zamiast restartować bazę danych w ten sposób, czystszym rozwiązaniem byłoby użycie JDBC -socketFactory opcja wyjaśniona tutaj .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstawianie rekordów autoreferencyjnych w Postgresql

  2. Jak działa Tand() w PostgreSQL

  3. Jak zwiększyć maksymalną liczbę połączeń w PostgreSQL

  4. Czy powinienem odłączyć(), jeśli używam connect_cached() Apache::DBI?

  5. Konwertujesz kolumny pandy na listę PostgreSQL?