gpt4 book ai didi

postgresql - Docker 容器 Postgres 连接错误

转载 作者:行者123 更新时间:2023-11-29 12:54:51 24 4
gpt4 key购买 nike

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

我在下面重现问题的步骤。

dockerfile 启动

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

我是这样构建docker文件的

$ docker build -t db_con .

并创建了一个容器

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

运行容器 View 如下

$ 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 才可用。

关于postgresql - Docker 容器 Postgres 连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46060533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com