Tengo el siguiente docker-compose.yml :
version: '3.7' services: postgres-service: image: postgres:12.3 env_file: - .env ports: - '5432:5432' volumes: - /postgres/data/ Este es mi .env :
POSTGRES_USER=app_postgres_user POSTGRES_PASSWORD=foobar POSTGRES_DB=app_database Sé que postgres-service está funcionando porque me conecto manualmente al servicio y funciona con los siguientes comandos:
docker-compose run postgres-service bash # connect to postgres-service psql --host=postgres-service --username=app_postgres_user --dbname=app_databasePero cuando intento conectarme desde "Webstorm > Base de datos", aparece este error:
The connection attempt failed. java.net.UnknownHostException: postgres-service.Si Webstorm se ejecuta en el mismo host que el contenedor, reemplace postgres-service con localhost .
Si se está ejecutando en otro lugar, reemplace postgres-service con la dirección IP de la máquina host de la ventana acoplable donde reside el contenedor.
Usé su docker-compose y me conecté con DBeaver con esta configuración:
Su contenedor de postgres reside en una red virtual (p. ej.: 172.17.0.0/16). De manera predeterminada, no hay una ruta desde su máquina a esa red.
cuando usas
ports: - 'src:dest' ...en su archivo docker-compose.yml , se crea una regla DNAT desde su host:src hasta el container:dest y esa es la razón de usar localhost:src o la dirección IP del host docker.