Docker Postgres连接被拒绝

时间:2019-11-05 16:52:38

标签: node.js postgresql docker

我正在尝试运行一个包含postgres的docker容器,并在我的应用程序上访问其localhost。但是,我收到此错误:

UserRDD$ docker run -i --rm -e PGPASSWORD=12qw --network=host postgres:10.9 psql -h localhost -p 5433 -U postgres -d postgres -f -

psql: could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5433?
could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5433?

同一代码似乎正在为其他人运行。不知道我在想什么。

可以让我知道我在想什么。过去3个小时一直在努力与之抗争。

谢谢

2 个答案:

答案 0 :(得分:0)

使用以下命令进行端口映射,将容器端口公开给本地主机-p <host_port>:<container_port>

docker run  -e POSTGRES_PASSWORD=12qw  -e POSTGRES_DB=stack -p 1111:5432 -d postgres

之后,您可以在localhost:1111端口上访问此postgres实例

psql -h localhost -p 1111 -U postgres -d stack

答案 1 :(得分:0)

原因是 Postgres ,因为您覆盖默认的CMD而不是数据库服务器,而默认psql仅启动Postgres客户端(postgres),因此数据库未运行。对于数据库服务器,参数应为docker run -i --rm -e PGPASSWORD=12qw --network=host postgres:10.9 postgres

docker run -i --rm  postgres:10.9 psql -h remote-server -p 5432 -U postgres -d postgres

因为您的命令不会启动Postgres服务器,但是只有Postgres客户端试图与容器的本地主机连接,但Postgres服务器未运行。就像

docker run  -e POSTGRES_PASSWORD=12qw  -e POSTGRES_DB=test -p 5432:5432 -d postgres:10.9

只需要运行postgres服务器

docker run -i --rm  postgres:10.9  --version

然后在数据库启动后与db连接。

另一个重要的事情是,传递给运行命令的任何参数都将被视为postgres服务器的参数,例如

Iterator<String> itr2 = itr1;
相关问题