我用spring-boot,spring jpa数据制作了一个小型应用程序,该应用程序连接到dockerized的postgres实例,即使我尝试通过’psql’连接到dockerized的postgres实例,它也能正常工作。问题是当我尝试对我的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
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的新手,但找不到任何可解决此问题的东西,我正在Windows 10上使用Unix容器运行docker。
谢谢大家。
在属性文件中,您指出postgres与Spring Boot应用程序(localhost)在同一容器中运行,但事实并非如此,因为它在其他容器中运行。
以此替换您的财产:
spring.datasource.url=jdbc:postgresql://postgres:5555/postgres
您还可以指向docker bridge ip,通常为172.17.0.1。