Docker中的Confluence无法在Docker中看到PostgreSQL

问题描述 投票:0回答:2

我正在尝试在Docker中设置Confluence和PostgreSQL。我已经在我最新的CentOS 6机器上运行它们,并将卷映射到主机文件系统,因此我可以轻松备份它们。我可以使用pgAdmin从另一台机器连接到PostgreSQL就好了,我可以从同一台机器的浏览器进入Confluence。所以,基本上,这两个应用程序似乎都按照预期在各自的容器内运行,并且可以被外部世界访问,这当然消除了我的问题的一大堆可能性。

问题是Confluence在初始设置期间无法与PostgreSQL通信,这对于它的运行是必要的。我收到连接失败错误(具体来说:“无法访问数据库服务器或端口:SQLState - 08001 org.postgresql.util.PSQLException:连接尝试失败”)。

PostgreSQL正在使用默认的5432端口,当然这是暴露的,否则我将无法通过pgAdmin连接到它,当然我知道我正在尝试的ID /密码是正确的,原因相同(除此之外) ,如果它是一个auth问题,我不希望看到这个错误消息)。当我尝试在Confluence的初始设置期间配置数据库连接时,我指定主机的IP地址,就像从另一台机器上的pgAdmin一样,但是这不起作用。我也试过一些我基本上不知道的东西(0.0.0.0,127.0.0.1和localhost)。

我不确定我需要做些什么来完成这项工作。是否有一些特殊的方法可以从同一台主机上为容器指定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
linux postgresql docker networking confluence
2个回答
2
投票

尝试将pg_hba.conf文件的第二行更改为以下内容:

host    all    all    0.0.0.0/32    trust

这将导致PostgreSQL开始接受来自任何源地址的调用。由于docker容器在技术上不在localhost上运行,而是在自己的ip上运行,因此当前配置会导致PostgreSQL阻止与它的任何连接。

还要检查confluence是否在localhost上搜索数据库。如果是这种情况会改变到docker网络中的hostmachine的ip。


0
投票

成功!解决方案是创建一个自定义网络,然后使用连接字符串中的映像名称从Confluence容器中的PostreSQL容器。换句话说,我跑了这个:

docker network create -d bridge docker-net

然后,在PostgreSQL和Confluence容器的两个docker run命令中,我添加了:

--network =搬运工网

这样,当我通过Confluence配置向导时,当它要求PostgreSQL服务器的主机名时,我使用postgres(我给容器的名称)而不是IP地址或实际主机名。 Docker通过自定义网络实现了这项工作。这也使容器可以通过主机的IP使用,所以例如我仍然可以通过192.168.123.12:5432连接到PostgreSQL,当然我可以通过192.168.123.12:8080在浏览器中启动Confluence。

仅供参考,我甚至不需要改变pg_hba.conf文件,我只是使用官方的PostgreSQL图像(最新版),这是理想的。

非常感谢RSloeserwij提出的建议......虽然没有一个证明是我需要的解决方案,但他们确实让我在Docker文档中走上了正确的轨道,经过一些阅读,让我了解了一些事情我以前没有,并找出我需要的配置魔法。

© www.soinside.com 2019 - 2024. All rights reserved.