PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

flyway incapaz de se conectar ao contêiner postgres no script docker-entrypoint-initdb.d


Eu tive o mesmo problema ao executar o flyway ao criar uma imagem docker para meu banco de dados com base na imagem postgres:10.5. Adicionei o seguinte ao meu entrypoint.sh antes de executar o flyway, para confirmar que o problema que estava vendo foi causado pela alteração docker-entrypoint.sh @Nick Maraston postada em sua resposta:
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

O resultado foi que o código acima ficou em loop para sempre. Em seguida, substituí-o pelo seguinte código para reiniciar o banco de dados ouvindo conexões TCP/IP no localhost:
pg_ctl -D "$PGDATA" -m fast -w stop
pg_ctl -D "$PGDATA" \
            -o "-c listen_addresses='localhost'" \
            -w start

Em vez de reiniciar o banco de dados assim, uma solução mais limpa seria usar o JDBC -socketFactory opção explicada aqui .