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

Usando o Docker para iniciar o aplicativo da Web, não pode se conectar ao Postgresql DB?


Por que NÃO consigo me conectar ao localhost:5432?

Cat o /etc/hosts do seu contêiner
$ sudo docker exec -it [container] cat /etc/hosts

Para redes docker é bridge por padrão, o localhost pontos internos para o próprio contêiner (rede de ponte padrão do Docker ).Então você não tem 5432 ouvindo em seu contêiner:
$ sudo docker exec [container] nc -v -z localhost 5432

Solução 1. Se você quiser codificar o "localhost:5432" dentro do seu config xml, a maneira mais fácil é criar seu container com a opção "--net=host":
$ sudo docker run --net=host -it ...

Solução 2. Altere o localhost do seu ip do host do docker dentro do container
  • Obtenha seu ip do host do docker
    $ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}' 
    192.168.5.1
  • Digite seu contêiner:
    $ sudo docker exec -it [container] /bin/bash
  • Edite o arquivo /etc/hosts para apontar o localhost para ip do host do docker :
    $ sudo vim /etc/hosts
    192.168.5.1 localhost

Solução 3. Modifique seu arquivo de configuração db para usar um alias em vez de localhost :
connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified"
Em seguida, adicione o DB_ALIAS para os hosts do contêiner:
$ sudo docker run --add-host DB_ALIAS:192.168.5.1 -it [image] ...