在Docker容器中安装PostgreSQL

我一直在跟随几个不同的教程以及正式的教程,但是每当我尝试在一个容器中安装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"? 

我已经通过在这里和整个互联网上看到了几个问题,但没有运气。

问题是你的应用程序/项目试图访问HOST机器(而不是docker容器)中的postgres套接字文件。

为了解决这个问题,你可以在使用-p标志为postgres容器设置一个端口的时候显式地询问一个tcp / ip连接,或者使用-v标志共享带有HOST机器的unix套接字。

:注意:使用-v--volume=标志意味着您在HOST机器和docker集装箱之间共享一些空间。 这意味着如果你的主机上安装了postgres并且运行,你可能会遇到问题。

下面我演示如何运行一个可以从tcp / ip和unix套接字访问的postgres容器。 另外我将容器命名为postgres

docker run -p 5432:5432 -v /var/run/postgresql:/var/run/postgresql -d --name postgres postgres

还有其他的解决scheme,但我觉得这是最合适的。 最后,如果需要访问的应用程序/项目也是一个容器,最好只是链接它们。

这里是修复这个错误的说明,也应该适用于你的docker容器: PostgreSQL错误'无法连接到服务器:没有这样的文件或目录'

如果这不起作用,有许多现成的postgresql docker容器可以在Docker索引中查看: https ://index.docker.io/search ? q = postgresql

许多容器是从github上的受信任的回购站构build的。 所以,如果你find一个似乎满足你的需求,你可以查看来源。

Flynn项目还包括一个postgresql设备,值得一试: https : //github.com/flynn/flynn-postgres