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] ...