连接被拒绝postgres docker

时间:2018-01-24 12:44:09

标签: postgresql docker spring-boot spring-data-jpa datasource

我用spring-boot,spring jpa数据创建了一个小应用程序,连接到一个dockerized postgres instace并且它工作得非常好,即使我尝试通过连接 ' PSQL'到了码头化的postgres instace它运作良好。问题是,当我尝试将我的spring-boot应用程序的图像实例停靠时,我尝试将其与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。

感谢所有人。

3 个答案:

答案 0 :(得分:2)

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

用此替换你的财产:

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

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

答案 1 :(得分:1)

改变 -

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

TO

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

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

答案 2 :(得分:0)

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