¿Por qué NO puedo conectarme a localhost:5432?
Cat el /etc/hosts
de su contenedor
$ sudo docker exec -it [container] cat /etc/hosts
Para las redes docker es bridge
por defecto, el localhost
inside apunta al propio contenedor (red de puente predeterminada de Docker
). Entonces no tienes 5432
escuchando en su contenedor:
$ sudo docker exec [container] nc -v -z localhost 5432
Solución 1. Si desea codificar "localhost:5432" dentro de su xml de configuración, la forma más sencilla es crear su contenedor con la opción "--net=host":
$ sudo docker run --net=host -it ...
Solución 2. Cambiar el
localhost
de su ip de docker host dentro del contenedor- Obtenga su ip de host docker :
$ sudo docker inspect -f '{{ .NetworkSettings.Gateway }}' 192.168.5.1
- Ingrese su contenedor:
$ sudo docker exec -it [container] /bin/bash
- Edite el archivo
/etc/hosts
para apuntar el host local a docker host ip :$ sudo vim /etc/hosts 192.168.5.1 localhost
Solución 3. Modifique su archivo de configuración de db para usar un alias en lugar de localhost
:
connectionURL="jdbc:postgresql://DB_ALIAS/admin?stringtype=unspecified"
Luego agregue el DB_ALIAS
a los hosts del contenedor:$ sudo docker run --add-host DB_ALIAS:192.168.5.1 -it [image] ...