sql >> Database teknologi >  >> RDS >> PostgreSQL

flyway ude af stand til at oprette forbindelse til postgres container i docker-entrypoint-initdb.d script

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 .



  1. Maven - java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

  2. Sådan finder du alle overtrædelser af begrænsninger i en SQL Server-database

  3. hvordan man forespørger efter min eller max inet/cidr med postgres

  4. Tilføj flere brugerdefinerede variabler til mysql-indsæt på blueimp/jquery-file-upload