sql >> Databasteknik >  >> RDS >> PostgreSQL

flyway kan inte ansluta till postgres-behållaren inom docker-entrypoint-initdb.d-skriptet

Jag hade samma problem när jag skapade en docker-bild för min databas baserad på postgres:10.5-bilden. Jag lade till följande i min entrypoint.sh innan jag körde flyway, för att bekräfta att problemet jag såg orsakades av docker-entrypoint.sh-ändringen som @Nick Maraston skrev i sitt 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 att ovanstående kod slingrade sig för alltid. Jag ersatte den sedan med följande kod för att starta om databasen och lyssna efter TCP/IP-anslutningar på localhost:

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

Istället för att starta om databasen så här, skulle en renare lösning vara att använda JDBC -socketFactory alternativet förklaras här .



  1. Oracle Managed ODP.NET kan inte hitta tnsnames.ora

  2. Autoincrement Primär nyckel i Oracle-databasen

  3. Användning av SUB i klasser

  4. Konvertera Jalali-kalendern till gregoriansk med PHP i CodeIgniter