连接被拒绝 postgres docker

fed*_*ico 3 postgresql datasource spring-data-jpa docker spring-boot

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

docker run -it --link mypgcontainerwithpwd:postgres --name postgresclient1 sprinbootjpa
Run Code Online (Sandbox Code Playgroud)

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

psql -p 5555 postgres postgres
Run Code Online (Sandbox Code Playgroud)

在 jar 中,我将执行application.properties文件,如下所示

spring.datasource.url=jdbc:postgresql://localhost:5555/postgres
spring.datasource.username=postgres
spring.datasource.password=password
spring.jpa.generate-ddl=true
Run Code Online (Sandbox Code Playgroud)

在开始阶段,会出现一个异常,打印出: 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"]
Run Code Online (Sandbox Code Playgroud)

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

谢谢大家。

Mar*_*uri 6

在您的属性文件中,您声明 postgres 与您的 Spring Boot 应用程序 (localhost) 在同一个容器中运行,但事实并非如此,因为它在不同的容器中运行。

用这个替换你的财产:

spring.datasource.url=jdbc:postgresql://postgres:5555/postgres
Run Code Online (Sandbox Code Playgroud)

您还可以指向通常为 172.17.0.1 的 docker 网桥 IP。