sql >> Base de Datos >  >> RDS >> PostgreSQL

flyway no puede conectarse al contenedor de postgres dentro del script docker-entrypoint-initdb.d

Tuve el mismo problema al ejecutar flyway al crear una imagen acoplable para mi base de datos basada en la imagen postgres:10.5. Agregué lo siguiente a mi entrypoint.sh antes de ejecutar flyway, para confirmar que el problema que estaba viendo fue causado por el cambio de docker-entrypoint.sh que @Nick Maraston publicó en su respuesta:

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

El resultado fue que el código anterior se repitió para siempre. Luego lo reemplacé con el siguiente código para reiniciar la base de datos escuchando conexiones TCP/IP en localhost:

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

En lugar de reiniciar la base de datos de esta manera, una solución más limpia sería usar JDBC -socketFactory opción explicada aquí .