Recuerda que en las ciencias informáticas cualquier problema puede tener diversas soluciones, no obstante nosotros te enseñaremos lo más óptimo y mejor.
Solución:
En este caso:
- Pgadmin no puede conectarse a localhost, pero psql funciona desde fuera de Docker.
- tanto pgadmin como Postgres se ejecutan como contenedores
Aunque no ha indicado si lo está haciendo, lo ideal sería que ambos contenedores formaran parte de una red puente personalizada para la resolución automática de DNS.
Si no se agregan explícitamente, serán parte de la red de puente predeterminada.
Para averiguar las redes creadas en el tiempo de ejecución de Docker, escriba: $ docker network ls
Algunas redes se enumerarán en la consola, tal vez encuentre una [name]_default
debe ser su red.
Ejecutar
docker network inspect [name]_default
mostrará un montón de información, para nosotros la más importante es la dirección IPv4, algo como esto:
"7c3cd7532ab8aacc70830afb74adad7296d9c8ddd725c498af2d7ee2d2c2aadd":
"Name": "intime_postegres_1",
"EndpointID": "56a9cb574469f22259497b72719f9f4a3e555b09f95058fcf389ef5287381f28",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
En lugar de usar localhost para el nombre/ip del servidor en el cuadro de diálogo del nuevo servidor de pgAdmin, conéctese a la “dirección IPv4” de la instancia de postgres.
En mi caso conectando en 172.18.0.2:5432
trabajado como un encanto.
Yo también tuve el caso cuando puedes conectarte con psql
comando en la terminal pero no con pgAdmin4. La siguiente solución funcionó para mí.
Primero –
docker ps
A partir de ahí, obtendrá el nombre/ID del contenedor del contenedor de postgres, luego haga:
docker inspect name_of_container_here
Te dará algo como esto:
"Networks":
"bridge":
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "f35dbe66b36cd38673aad6e1278ad33031ef9d5abd34582d4b91955e288f855e",
"EndpointID": "2e63ea59e9d0de7526bb02ba29bc0b16bcad51b8963127ad380416d15da994db",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02",
"DriverOpts": null
Tenga en cuenta la dirección IP y proporcione eso al crear un nuevo servidor en pgAdmin4 –
Tuve el mismo problema y lo resolví de una manera no canónica, pero muy satisfactoria para mi flujo de trabajo local.
Siempre empiezo mi contenedor postgresql con un docker-compose.yaml
expediente. Así que acabo de agregar pgAdmin al mismo archivo de redacción:
version: "3.7"
services:
my_awesome_db:
image: postgres:latest
ports:
- "5432:5432"
container_name: postgresql-local
volumes:
- "/var/run/postgres.sock:/var/run/postgres/postgres.sock"
- "/home/myuser/docker-apps/volumes/postgres-data:/var/lib/postgresql/data"
pg_admin:
image: dpage/pgadmin4:latest
container_name: pgadmin4
ports:
- "15432:80"
environment:
- GUNICORN_THREADS=1
- [email protected]
- PGADMIN_DEFAULT_PASSWORD=does_not_matter
depends_on:
- my_awesome_db
Así que accedo a pgAdmin en mi localhost: 15432 (solo porque es fácil de recordar), y configuré pgAdmin con:
Host: my_awesome_db
Port: 5432
Username: postgres
Sección de Reseñas y Valoraciones
Tienes la opción de añadir valor a nuestra información aportando tu veteranía en las anotaciones.