Docker容器Postgres连接错误

我一直在尝试docker容器postgres。 到目前为止,我还没有能够连接到容器内的数据库。

我的步骤重新创build下面的问题。

dockerfile启动

FROM postgres ENV POSTGRES_DB db ENV POSTGRES_USER postgres ENV POSTGRES_PASSWORD postgres COPY db_schema.sql /docker-entrypoint-initdb.d/ 

我像这样构build了docker文件

 $ docker build -t db_con . 

并创build了一个容器

 $ docker run -it -p 5432:5432 --name test_db db_con /bin/bash 

运行容器的视图如下

 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 82347f1114c4 db "docker-entrypoint..." 3 hours ago Up 2 sec 0.0.0.0:5432->5432/tcp test_db 

我检查了容器的地址信息..

 $ docker inspect test_db --extract start-- "Networks": { "bridge": { "Gateway": "172.17.0.1", "IPAddress": "172.17.0.2", } } --extract end-- 

现在,我已经在容器内试过了,但是我还没有成功。 我已经尝试了下面的错误与下面的错误。

 root@82347f1114c4:/# psql -U postgres -h 0.0.0.0 -p 5432 -d db root@82347f1114c4:/# psql -U postgres -h 172.17.0.1 -p 5432 -d db root@82347f1114c4:/# psql -U postgres -h 172.17.0.2 -p 5432 -d db **response for all the above** psql: could not connect to server: Connection refused Is the server running on host "0.0.0.0" and accepting TCP/IP connections on port 5432? 

如果有人能指出我的方向,我会很高兴的。 我在这里打了一堵墙,非常感谢任何帮助。

它看起来像你重写默认的postgres cmd到/bin/bash 。 你为什么要把/bin/bash放在命令的最后?

 docker run -it -p 5432:5432 --name test_db db_con /bin/bash 

尝试执行

 docker run -it -p 5432:5432 --name test_db db_con 

此外,postgres只有在数据库转储被恢复时才可用。

你需要在你的pg_hba.conf中添加一个新的规则:

 nano /etc/postgresql/9.3/main/pg_hba.conf 

加:

 host all all [Docker Server IP]/16 md5 

接下来,您需要在postgres.conf中取消注释:

 listen_addresses = '*' # what IP address(es) to listen on; 

现在重新启动你的postgres服务,然后重试。