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

Usando Docker para iniciar la aplicación web, ¿no puede conectarse a Postgresql DB?

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