pgk*_*gkt 6 postgresql configuration pgadmin server docker-compose
我在docker-compose upfedora 28 操作系统上的docker 上运行 postgres 和 pgadmin4 ,但我无法从 pgadmin 的 Web 控制台创建新的数据库服务器。这是docker-compose.yml我正在使用的文件。
version: '3.0'
services:
db:
image: postgres:9.6
ports:
- 5432:5432/tcp
environment:
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=admin
- POSTGRES_DB=mydb
pgadmin:
image: dpage/pgadmin4
ports:
- 5454:5454/tcp
environment:
- PGADMIN_DEFAULT_EMAIL=admin@mydomain.com
- PGADMIN_DEFAULT_PASSWORD=postgres
- PGADMIN_LISTEN_PORT=5454
Run Code Online (Sandbox Code Playgroud)
我应该在Create new server>连接选项卡 > “主机名/地址”字段中写什么?如果我输入localhost或127.0.0.1出现错误(无法连接,请参阅屏幕截图 1和屏幕截图 2)。如果我输入db(yml文件中指定的服务名称),只有 pgadmin 接受它并创建一个带有名为mydb的 postgres 数据库的 db 服务器。
为什么?如何找到地址字段中的IP?
此外,在 Fedora28 上:
$ netstat -napt | grep LIST
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:3350 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:3389 0.0.0.0:* LISTEN -
tcp6 0 0 :::5454 :::* LISTEN -
tcp6 0 0 ::1:631 :::* LISTEN -
tcp6 0 0 :::5432 :::* LISTEN -
$
Run Code Online (Sandbox Code Playgroud)
我最近也遇到了这个问题。我发现有两种方法:
1)参见这里。基本上,您只需搜索 postgres 容器的 IP 地址并在 pgadmin4 中使用该 IP 地址:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
194d4a5f9dd0 dpage/pgadmin4 "/entrypoint.sh" 48 minutes ago Up 48 minutes 443/tcp, 0.0.0.0:8080->80/tcp docker-postgis_pgadmin_1
334d5bdc87f7 kartoza/postgis:11.0-2.5 "/bin/sh -c /docke..." 48 minutes ago Up 48 minutes (healthy) 0.0.0.0:5432->5432/tcp docker-postgis_db_1
Run Code Online (Sandbox Code Playgroud)
就我而言,postgres 容器 ID 是334d5bdc87f7。然后查找IP地址:
$ docker inspect 334d5bdc87f7 | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "",
"IPAddress": "172.18.0.2",
Run Code Online (Sandbox Code Playgroud)
我172.18.0.2在pgadmin4中使用的时候,是连接数据库的!耶!
2)第二种方法更容易。我没有使用localhostor127.0.0.1或::1,而是使用了本地网络中的 IP 地址(例如, 在您的情况下192.168.122.1?)。然后,我连接到了 postgres 容器!
根据我阅读文档并亲自测试,您正确使用 docker-compose yml 文件中的数据库服务名称作为 pgAdmin 中的“主机名/地址”字段值。
https://docs.docker.com/compose/networking/
在您的“pgadmin”部分中,我将使用端口值 8080 或 80,为什么使用 5454?
| 归档时间: |
|
| 查看次数: |
1880 次 |
| 最近记录: |