postgresql 和 pgadmin docker 容器的问题

Problem with postgresql and pgadmin docker containers

我正在尝试连接 postgresqlpgadmin4 一起工作。 pgadmin4 工作正常但是当我尝试创建一个新服务器时我遇到了 2 个问题:

我执行此命令以获取 postgres 容器:docker run -p 5431:5432 --name postgres2 -e POSTGRES_PASSWORD=ad1234 -d postgres.

我尝试按照 Whosebug 中的其他响应添加此命令 -c"listen_addresses='*'" 并且我也在配置文件中输入,但这些对我来说都不起作用。

希望你能帮助我,谢谢。

编辑[已解决]

好的,我解决了,这是我的一个大失败。我正在使用 172.17.0.5(IP 容器地址),我需要用来连接的是 172.17.01(网关)。 谢谢你的时间。

我用这种方式重现了你的场景:

# docker run -p 5431:5432 --name postgres2 -e POSTGRES_PASSWORD=ad1234 -d postgres
# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
d4030c577a24        postgres            "docker-entrypoint.s…"   2 minutes ago      Up 2 minutes       0.0.0.0:5431->5432/tcp   postgres2

# sudo -u postgres psql -h localhost -p 5431
could not change directory to "/root": Permission denied
Password: 
psql (10.5, server 11.2 (Debian 11.2-1.pgdg90+1))
WARNING: psql major version 10, server major version 11.
         Some psql features might not work.
Type "help" for help.

postgres=# CREATE DATABASE mytestdb;
CREATE DATABASE
postgres=# \q

现在开始 docker pgadmin 并能够连接到 postgresql:

docker run -p 80:80 --link postgres2 -e "PGADMIN_DEFAULT_EMAIL=user@domain.com" -e "PGADMIN_DEFAULT_PASSWORD=SuperSecret" -d dpage/pgadmin4

使用上面的命令你可以link postgres2 docker 到 pgadmin docker 然后在 pgadmin4 上创建连接你应该使用:

  • 主机name/address:postgres2
  • 端口:5432
  • 维护数据库:postgres
  • 用户名:postgres

这样,我就从 pgadmin4

连接到了 Postgres

据我所知,docker PostgreSQL 默认只有本地主机连接,如果你想添加远程连接,你应该添加 "listen_addresses = '*'" 到 postgresql.conf