sql >> Database >  >> RDS >> PostgreSQL

flyway kan geen verbinding maken met de postgres-container in het docker-entrypoint-initdb.d-script

Ik had hetzelfde probleem met het uitvoeren van flyway bij het maken van een docker-afbeelding voor mijn database op basis van de postgres:10.5-afbeelding. Ik heb het volgende aan mijn entrypoint.sh toegevoegd voordat ik flyway uitvoerde, om te bevestigen dat het probleem dat ik zag werd veroorzaakt door de docker-entrypoint.sh-wijziging die @Nick Maraston in zijn antwoord plaatste:

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

Het resultaat was dat de bovenstaande code voor altijd doorliep. Ik heb het toen vervangen door de volgende code om de database opnieuw te starten en te luisteren naar TCP/IP-verbindingen op localhost:

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

In plaats van de database op deze manier opnieuw op te starten, zou een schonere oplossing zijn om de JDBC -socketFactory te gebruiken optie uitgelegd hier .



  1. Gebruik een vakbond of een join - Wat is sneller

  2. Informatie over Oracle RAC Network en IP's controleren

  3. Dag en maand opslaan (zonder jaar)

  4. Galera Cluster Cloud-aanbiedingen vergelijken:deel twee Google Cloud Platform (GCP)