我正在尝试在 Docker 中设置 Confluence 和 PostgreSQL。我已经在我完全最新的 CentOS 6 机器上启动并运行了它们,并将卷映射到主机文件系统,这样我就可以轻松地备份它们。我可以使用另一台机器上的 pgAdmin 连接到 PostgreSQL,我可以从同一台机器上的浏览器进入 Confluence。所以,基本上,这两个应用程序似乎都在各自的容器内按预期运行,并且可供外界访问,这当然消除了我的问题的一大堆可能性。
这个问题是 Confluence 无法在初始设置期间与 PostgreSQL 通信,而这是运行所必需的。我收到连接失败错误(具体来说:“无法到达数据库服务器或端口:SQLState - 08001 org.postgresql.util.PSQLException:连接尝试失败”)。
PostgreSQL 使用默认的 5432 端口,这当然是暴露的,否则我将无法通过 pgAdmin 连接到它,当然我知道我正在尝试的 ID/密码是正确的,原因相同(此外,如果这是一个身份验证问题,我不希望看到此错误消息)。当我在 Confluence 的初始设置期间尝试配置数据库连接时,我指定了主机的 IP 地址,就像从另一台机器上的 pgAdmin 一样,但这不起作用。我还尝试了一些我基本上知道行不通的东西(0.0.0.0、127.0.0.1 和本地主机)。
我不确定我需要做什么才能完成这项工作。是否有一些特殊的方法可以从同一台主机为容器指定 IP,一些我不知道的命名法?
在这一点上,我对 Docker 的基本操作“还行”,但我离专家还很远,所以我有点迷茫。一般来说,我也不是*nix 的忠实用户,尽管我通常 可以摸索大部分事情...但是任何提示都将不胜感激,因为我现在不知所措否则。
谢谢, 弗兰克
编辑 1:根据下面某人的要求,这是我的 pg_hba.conf 文件,减去注释:
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
host all all all md5
最佳答案
尝试将 pg_hba.conf 文件的第二行更改为以下内容:
host all all 0.0.0.0/32 trust
这将导致 PostgreSQL 开始接受来自任何源地址的调用。由于 docker 容器在技术上不是在本地主机上而是在其自己的 ip 上运行,因此当前配置导致 PostgreSQL 阻止与它的任何连接。
同时检查 confluence 是否正在本地主机上搜索数据库。如果是这种情况,请将其更改为 docker 网络中主机的 ip。
关于linux - Docker 中的 Confluence 在 Docker 中看不到 PostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49044241/