Spring Boot Docker容器无法连接托管在Docker主机上的PostgreSQL。

3
当我使用Maven构建我的Spring Boot应用程序时,应用程序需要在`application.properties`中与我的PostgreSQL数据库建立连接。只有当我使用以下代码时才能成功连接:
spring.datasource.url=jdbc:postgresql://localhost:5432/springbootdb

但是当我将构建好的jar文件打包进容器中时,我的应用程序无法连接到在容器外部托管的Postgres数据库。
这个问题该怎么解决呢?
我还是一个初学者。

你正在使用Windows吗? - Алексей Романов
是的,我正在使用Windows 10。 - babastyle
2个回答

3
从18.03的文档中可以得知:
我想要从容器连接到主机上的服务。
主机拥有一个变化的IP地址(如果没有网络访问则为无)。从18.03版本开始我们建议您连接到特殊的DNS名称host.docker.internal,该名称解析为主机使用的内部IP地址。
网关也可以作为gateway.docker.internal访问。
例子:
spring.datasource.url=jdbc:postgresql://host.docker.internal:5432/springbootdb

以上信息可以在此处的Networking文档中找到:https://docs.docker.com/docker-for-mac/networking/ - whyceewhite

1

您的PostgreSQL数据库托管在哪里?

将localhost替换为实际机器IP地址(PostgreSQL数据库机器地址)

spring.datasource.url=jdbc:postgresql:<ip_address>:5432/springbootdb

对我没用: java.net.UnknownHostException: postgresql 当我想使用maven构建时。 - babastyle
你的PostgreSQL数据库在哪里?是在安装docker的同一台机器上吗?还是在外部?(Windows?)以及docker应用程序在哪里?(Windows / Ubuntu?) - Rohan J Mohite
它在我的Windows本地主机上,但我认为容器有另一个环境。与Docker相同的机器。 - babastyle
您的防火墙是否阻止了入站/出站端口5432?能否请您在Windows防火墙中添加/允许入站和出站的5432端口? - Rohan J Mohite
很遗憾对我没有起作用,感谢您的建议。 - babastyle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接