我已经成功构建了基于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.
我是端口转发的初学者,但它看起来像是与端口相关的问题。
有什么想法吗?
答案 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