Discourse 配合 pg_bouncer 和独立数据库运行

我尝试将我们的 Discourse 实例配置为通过 pg_bouncer 连接到托管在 Azure 上的独立 Postgres 数据库(设置方法如此处所述),但遇到了问题。

我们的 Discourse 托管在 Azure 的虚拟机上。我已在该虚拟机上安装并配置了 pg_bouncer,并且可以通过以下方式验证可以从该虚拟机连接到托管的数据库:

psql -h 127.0.0.1 -p 5432 -U [username] -d [database]

在我的 app.yml 中,我将数据库主机名更改为使用 127.0.0.1:

DISCOURSE_DB_HOST: [原为主机名,已尝试改为 127.0.0.1]

在重新构建应用时,我收到以下错误:

I, [2020-09-18T20:48:51.653890 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
PG::ConnectionBad: could not connect to server: Connection refused
	Is the server running on host "127.0.0.1" and accepting
	TCP/IP connections on port 5432?

我能想到的唯一区别是,在 app.yml 中指定了密码,而在 psql 中不需要指定密码,因为该密码已在 pg_bouncer 的 userlist 中设置。

任何帮助都将不胜感激。

1 个赞

我相信你需要使用容器可以访问的 IP 地址。容器有自己的本地主机,我相信是这样。

3 个赞

哦,明白了!使用我的 10.x.x.x 地址时一切正常。

不过,这可能不是最佳解决方案。如果从 Discourse Docker 容器访问主机有更推荐的方式,请随时告诉我。

谢谢!

1 个赞