连接被拒绝 postgres docker

connection refused postgres docker

我用 spring-boot,spring jpa 数据创建了一个小应用程序,它连接到一个 dockerized postgres 实例并且它工作得很好,即使我尝试通过连接 'psql' 到 docker 化的 postgres 实例,它运行良好。问题是当我尝试 dockerize 我的 spring-boot 应用程序的图像实例并且我尝试 link 它与 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

构建实例的docker文件如下所示

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 的新手,我没有找到任何解决问题的方法,我 运行 docker 在 windows 10 上使用 unix 容器.

感谢大家。

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

将您属性替换为:

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

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

更改 -

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

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

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

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