psql无法访问在Docker容器中运行的Postgres

时间:2018-06-18 12:54:45

标签: postgresql ubuntu docker port psql

我已经成功构建了基于postgres的Docker image that enables PostGIS

我跑了它:

docker run -d -t -p 5432:5432 -v ./data:/data --name postgis-osm-pgrouting -e POSTGRES_PASSWORD=postgres pamtrak06/postgis-pgrouting-osm bash

但是,当我尝试通过psql连接数据库时:

psql -h localhost -p 5432 postgres

我收到错误:

psql: server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.

我是端口转发的初学者,但它看起来像是与端口相关的问题。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

要从容器中访问应用程序,您需要先“附加”到该容器。

您可以通过运行以下命令来实现:

docker exec -it container_name sh

此命令的作用是在容器sh内运行命令container_name

它将提示一个shell终端,您现在可以在其中运行psql命令,如下所示:

psql -U postgres

您在此处使用postgres用户(psql的默认授权用户)运行psql

答案 1 :(得分:-1)

尝试

docker run -d -t -p 5432:5432 -v $PWD/data:/data --name postgis-osm-pgrouting -e POSTGRES_PASSWORD=postgres pamtrak06/postgis-pgrouting-osm

然后

psql -h localhost -p 5432 postgres

您已经:

psql: could not connect to server: Connection refused
Is the server running on host "192.168.99.101" and accepting
TCP/IP connections on port 5432?

因此应用[配置PostgreSQL以接受TCP / IP连接] [https://www.mozmorris.com/2011/11/15/configure-postgresql-to-accept-tcpip-connections.html],但不用于生产环境,仅出于测试目的!

并使用此配置覆盖您的Dockerfile