我一直在关注几种不同的教程以及官方教程,但是每当我尝试在容器中安装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"?
我在SO和整个互联网上浏览了几个问题,但是没有运气。
问题是您的应用程序/项目正在尝试访问HOST机器(不是docker容器)中的postgres套接字文件。
要解决这个问题,要么必须在使用该-p标志为postgres容器设置端口时明确要求进行tcp / ip连接,要么使用该-v标志与HOST共享共享unix套接字。
-p
-v
:注意:使用-v或--volume=标志意味着您正在HOST机器和Docker容器之间共享一些空间。这意味着,如果您在主机上安装了postgres并使其运行,则可能会遇到问题。
--volume=
下面,我演示如何运行可从tcp / ip和unix套接字访问的postgres容器。我也将容器命名为postgres。
postgres
docker run -p 5432:5432 -v /var/run/postgresql:/var/run/postgresql -d --name postgres postgres
还有其他解决方案,但我认为这是最合适的。最后,如果需要访问的应用程序/项目也是容器,则最好将它们链接在一起。