无法从 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:src
到 container:dest
的 DNAT 规则,这就是使用 localhost:src
或 IP 的原因docker 主机的地址。
我有以下 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:src
到 container:dest
的 DNAT 规则,这就是使用 localhost:src
或 IP 的原因docker 主机的地址。