我一直在学习几个不同的教程以及正式教程,但是每当我试图在容器中安装PostgreSQL时,我都会收到以下消息
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"?
我已经在网上浏览过几个问题,但是没有运气。
发布于 2017-01-05 04:17:35
问题是,您的应用程序/项目试图访问主机中的postgres套接字文件(而不是坞容器)。
要解决这个问题,要么在使用-p
标志为postgres容器设置端口时显式地请求tcp/ip连接,要么使用-v
标志与主机共享unix套接字。
注意:使用-v
或--volume=
标志意味着在主机和码头容器之间共享一些空间。这意味着,如果您在主机上安装了postgres并运行它,您可能会遇到问题。
下面我演示如何运行一个postgres容器,它可以从tcp/ip和unix套接字访问。另外,我将容器命名为postgres
。
docker run -p 5432:5432 -v /var/run/postgresql:/var/run/postgresql -d --name postgres postgres
有其他的解决办法,但我认为这是最合适的。最后,如果需要访问的应用程序/项目也是一个容器,最好只是将它们链接起来。
发布于 2018-09-21 03:36:14
默认情况下,psql
试图使用UNIX连接到服务器。这就是为什么我们看到/var/run/postgresql/.s.PGSQL.5432- -一个UNIX-套接字描述符的位置。
如果您在带有端口绑定的docker中运行postgresql,则必须告诉psql
使用TCP-套接字。只需添加host
param (--host
或-h
):
psql -h localhost [any other params]
UPD。或者与主机共享UNIX描述符(其中将启动psql
),如主要答案所示。但是我更喜欢使用TCP套接字作为简单的管理方法。
发布于 2014-05-18 18:50:28
下面是修复这个错误的说明,这个错误也应该适用于您的码头容器:PostgreSQL错误“无法连接到服务器:没有这样的文件或目录”
如果这样做不起作用,那么您可以在docker:https://index.docker.io/search?q=postgresql上查看许多现成的postgresql码头容器。
许多容器是由github上可信的repos构建的。因此,如果您找到一个似乎满足您的需要,您可以查看源。
Flynn项目还包括一个可能值得检查的postgresql设备:https://github.com/flynn/flynn-postgres
https://stackoverflow.com/questions/23724713
复制相似问题