Estoy tratando de conectar mi base de datos postgres local usando el contenedor docker pgAdmin4. Cuando abro http://localhost:5050/ e inicio sesión después de crear una nueva conexión con el servidor, aparece Unable to connect to server: could not connect to server: Connection refused .
Aquí está mi archivo docker-compose.yml
version: '3.5' services: pgadmin: container_name: pgadmin4 image: dpage/pgadmin4 environment: PGADMIN_DEFAULT_EMAIL: db@db.com PGADMIN_DEFAULT_PASSWORD: odoo volumes: - pgadmin:/root/.pgadmin ports: - "5050:80" restart: unless-stopped volumes: pgadmin:Estoy encontrando una solución para conectar mi base de datos postgres local con el contenedor docker pgadmin4. Estoy usando el sistema operativo Ubuntu 20.04 .
---- Base actualizada en la respuesta de @Veikko -----------
Aquí está mi código de archivo docker-compose https://pastebin.com/VmhZwtaL
y aquí está el archivo postgresql.conf https://pastebin.com/R7ifFrGR
y el archivo pg_hba.conf https://pastebin.com/yC2zCfBG
Tengo un problema antes, ahora he encontrado la solución.
Solo escribe este comando
docker exec <container_name> cat /etc/hostsEntonces mostrará esto
127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.18.0.3 607b00c25f29 use 172.18.0.3 como su nombre de host
Espero que esto le pueda ayudar.
Puede acceder a su máquina host desde su contenedor docker con el nombre dns host.docker.internal . Reemplace localhost en la conexión de su servidor con este nombre. El nombre localhost dentro de su pgAdmin se refiere al contenedor docker en sí, no a su máquina host.
Puede usar image qoomon/docker-host para acceder a los servicios en su computadora host. Agregue el servicio docker-host a su docker-compose de esta manera:
version: '3.5' services: docker-host: image: qoomon/docker-host cap_add: [ 'NET_ADMIN', 'NET_RAW' ] restart: on-failure pgadmin: container_name: pgadmin4 image: dpage/pgadmin4 environment: ... Después de esto, debería poder acceder al servicio Postgres de su host con el nombre de host docker-host. Reemplace localhost con docker-host en su cadena de conexión y la conexión debería funcionar.
Si tiene problemas con la conexión después de esto, asegúrese de que no tiene ningún firewall que bloquee el tráfico, tiene la configuración de red Docker adecuada (ver documentos) y su postgresql está escuchando esta dirección.
La versión Ubuntu/linux de Docker actualmente no es compatible con el nombre de DNS host.docker.internal que señalaría los contenedores al host. Esa es la forma más fácil de vincular al host en Docker para Mac o Windows. Espero que esto también llegue pronto a Linux.
Se puede encontrar más información sobre docker-host en el repositorio de Github: https://github.com/qoomon/docker-host
Primero llame a esto: sudo netstat -nplt para asegurarse de que alguien escuche en el puerto 5432.
Luego llame a sudo ip addr para conocer la IP de su host mashine.
Entonces intente conectarse usando una IP real en lugar de localhost .
Veo en su salida de ip addr :
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 30:10:b3:e4:39:e2 brd ff:ff:ff:ff:ff:ff inet 192.168.43.190/24 brd 192.168.43.255 scope global dynamic noprefixroute wlp3s0
Entonces tu IP real es 192.168.43.190
Cree un server con nombre de host/dirección 172.17.0.1 y asegúrese de que PostgreSQL esté escuchando (*).
puede intentar agregar a su pg_hba.conf
host all all 0.0.0.0/0 trusto
host all all 0.0.0.0/0 md5Probar.
Luego, si esto funciona, debe cambiar la máscara de red 0.0.0.0/0 a su máscara de red brillante de Docker. Y compruébalo de nuevo. Por cierto. para conectarse a su host local (en el host), debe conectarse a la ip brillante de docker para mí, es 172.17.0.1/32 .
EDITAR: Segundo: postgresql.conf
descomente y lea lo que hay escrito:
listen_addresses = '*' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost'; use '*' for all # (change requires restart) debe vincularse a sus IP que se pueden conectar desde la ventana acoplable, por lo que en mi caso debería ser 172.17.0.1