我有一个带有web rails应用程序的docker容器。我的osx机器上也有外部数据库。如果我执行osx:
psql "postgres://postgres:testing@0.0.0.0:5432/movies_development"
我运行正常
如果我在容器中运行它,我将收到
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
有任何想法如何从容器连接到外部数据库? 感谢
答案 0 :(得分:0)
根据您的问题,可能有两个原因:
EXPOSE 5432
?或者在使用docker run -it -d --name $container_name -p 5432:5432 $image_name
启动容器之前?如果否,则必须执行上述任何更改,而不是可以连接到外部托管数据库。 docker exec -it $container_name bash
进入docker容器并执行命令psql "postgres://postgres:testing@0.0.0.0:5432/movies_development"
,则必须在docker容器中安装psql客户端并使用正确的$PATH
变量,否则会抛出错误喜欢命令找不到/没有这样的文件或目录。希望这有帮助。谢谢!
答案 1 :(得分:0)
我找到了一种方法,可以将docker容器中的连接应用程序添加到位于我的osx上的本地数据库。
0.0.0.0:5432是容器的本地主机地址(不是osx的本地主机),我们必须设置新的地址:
listener_address: '192.168.0.102, localhost'
。通过ENV在app中设置连接设置,如:postgres:// postgres:testing@192.168.0.102:5432 / movies_development