连接被拒绝 postgres docker

Posted

技术标签:

【中文标题】连接被拒绝 postgres docker【英文标题】:connection refused postgres docker 【发布时间】:2018-07-03 12:26:50 【问题描述】:

我用 spring-boot,spring jpa 数据创建了一个小应用程序,它连接到一个 dockerized postgres instace,它工作得很好,即使我尝试通过连接 'psql' 到 dockerized postgres instace 它运行良好。问题是当我尝试将我的 spring-boot 应用程序的图像实例 dockerize 并尝试将它与 dockerized postegres 实例链接时。 我使用的 docker 命令是这样的

docker run -it --link mypgcontainerwithpwd:postgres --name postgresclient1 sprinbootjpa

正如我已经提到的,容器 mypgcontainerwithpwd 正在运行并且可以通过本地应用程序通过 psql 访问

psql -p 5555 postgres postgres

在我要执行的jar中application.properties文件看起来像这样

spring.datasource.url=jdbc:postgresql://localhost:5555/postgres
spring.datasource.username=postgres
spring.datasource.password=password
spring.jpa.generate-ddl=true

在开始阶段会引发异常,打印:connection refused localhost-> 5555

构建实例的 dockerfile 如下所示

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD ./SpringJPA-PostgreSQ-0.0.1.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

我是 docker 新手,我没有找到任何解决问题的方法,我正在使用 unix 容器在 Windows 10 上运行 docker。

谢谢大家。

【问题讨论】:

【参考方案1】:

这可行,但我只想强调 Vivek 的观点,即“postgres”来自容器名称,而不是用户 ID 或数据库类型。我使用的是 Docker Compose,所以这个名字来自我的 docker-compose.yml 文件。

【讨论】:

【参考方案2】:

改变 -

spring.datasource.url=jdbc:postgresql://localhost:5555/postgres

spring.datasource.url=jdbc:postgresql://postgres:5555/postgres

由于您使用链接--link mypgcontainerwithpwd:postgres 启动客户端容器,这意味着您的客户端将能够使用别名postgres 访问您的mypgcontainerwithpwd 容器。 localhost 表示您的客户端容器本身,而不是 mypgcontainerwithpwd

【讨论】:

【参考方案3】:

在您的属性文件中,您声明 postgres 与您的 Spring Boot 应用程序 (localhost) 在同一个容器中运行,这是不正确的,因为它在不同的容器中运行。

用这个替换你的财产:

spring.datasource.url=jdbc:postgresql://postgres:5555/postgres

您也可以指向 docker bridge ip,通常是 172.17.0.1。

【讨论】:

谢谢,它可以将“localhost”更改为 172.17.0.1,但不能使用“postgres”进行更改。 docker 是否会手动更改主机文件以将 172.17.0.1 解析为“postgres”?无论如何,非常感谢。

以上是关于连接被拒绝 postgres docker的主要内容,如果未能解决你的问题,请参考以下文章

postgres连接在摇摆中被拒绝

连接被拒绝 postgres docker

从本地节点服务器到Postgres DB的连接被拒绝

Docker- django 在连接到 postgres 时抛出错误:psycopg2.OperationalError:无法连接到服务器:连接被拒绝

尝试连接数据库和 Web 容器时 SQLAlchemy 连接被拒绝

Heroku Rails 4 无法连接到服务器:连接被拒绝