无法从 WebStorm (JetBrains) 访问 Postgres 运行 docker-compose

Can't access Postgres running with docker-compose from WebStorm (JetBrains)

我有以下 docker-compose.yml:

version: '3.7'

services:
  postgres-service:
    image: postgres:12.3
    env_file:
      - .env
    ports:
      - '5432:5432'
    volumes:
      - /postgres/data/

这是我的 .env:

POSTGRES_USER=app_postgres_user
POSTGRES_PASSWORD=foobar
POSTGRES_DB=app_database

我知道 postgres-service 正在工作,因为我手动连接到该服务并且它使用以下命令工作:

docker-compose run postgres-service bash # connect to postgres-service
psql --host=postgres-service --username=app_postgres_user --dbname=app_database

但是,当我尝试从“Webstorm > 数据库”中进行连接时,出现此错误:

The connection attempt failed.
java.net.UnknownHostException: postgres-service.

截图:

如果 Webstorm 运行 与容器位于同一主机上,请将 postgres-service 替换为 localhost

如果其他地方是运行,则将postgres-service替换为容器所在的docker主机的IP地址。

我使用了你的 docker-compose 并使用这些设置连接了 DBeaver:

您的 postgres 容器驻留在虚拟网络中(例如:172.17.0.0/16)。默认情况下,没有从您的计算机到该网络的路由。

当你使用

ports:
      - 'src:dest'

...在您的 docker-compose.yml 文件中,创建了从 host:srccontainer:dest 的 DNAT 规则,这就是使用 localhost:src 或 IP 的原因docker 主机的地址。