docker - 在 docker 容器中安装 PostgreSQL

标签 docker postgresql-9.3

我一直在关注几个不同的教程以及官方教程,但是每当我尝试在容器中安装 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 和整个互联网上查看了几个问题,但没有运气。

最佳答案

问题是您的应用程序/项目正在尝试访问主机机器(而不是 docker 容器)中的 postgres 套接字文件。

要解决这个问题,要么在使用 -p 标志为 postgres 容器设置端口时显式请求 tcp/ip 连接,要么与 HOST 共享 unix 套接字使用 -v 标志进行处理。

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

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

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

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

关于docker - 在 docker 容器中安装 PostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23724713/

相关文章:

docker - 在 Windows 虚拟机中运行 Docker

docker - docker --rm仅当退出代码为零时

python - 无法从同一 docker swarm 上运行的其他服务连接到 postgres 服务?

docker - Kubeadm init 警告 - 没有可用的验证器

PostgreSQL 9.3 : Pass more than 100 arguments to `REPLACE` function

sql - 连接 PostgreSQL 表时,WHERE 中不允许使用聚合函数

postgresql - 如何检查 PostgreSQL 9.3 中右侧的无限范围是否为 NULL - 确保使用 GIST 索引

docker - 另一个卷中的卷使用www-data而不是root

database - 在 Rails 应用程序上管理数据的最佳方式

sql - PostgreSQL 优化器如何处理跨列关联