Java 如何从docker容器访问远程IP上的非容器化DB?

Java 如何从docker容器访问远程IP上的非容器化DB?,java,spring,docker,networking,jersey,Java,Spring,Docker,Networking,Jersey,我正在尝试在Docker中打包JavaWeb服务。我有一个托管在VM上的postgres DB(非容器化),docker容器中的代码无法连接到数据库。如何做到这一点?理论上spring.datasource.url=jdbc:postgresql://yourIpAddress/nameOfDB应该可以 但是数据库不在8080上运行,所以您需要绑定数据库端口(对于postgres 5432,对于mysql 3306),而我不会将其绑定到80,因为所有内容都在侦听 如果您正在运行postgres,

我正在尝试在Docker中打包JavaWeb服务。我有一个托管在VM上的postgres DB(非容器化),docker容器中的代码无法连接到数据库。如何做到这一点?

理论上
spring.datasource.url=jdbc:postgresql://yourIpAddress/nameOfDB
应该可以

但是数据库不在8080上运行,所以您需要绑定数据库端口(对于postgres 5432,对于mysql 3306),而我不会将其绑定到80,因为所有内容都在侦听

如果您正在运行postgres,它将在5432上侦听,因此您可以执行
docker run-p 8082:5432 postgres

然后您应该能够通过
jdbc:p连接到主机ostgresql://yourIpAddress:8082/nameOfDB


这一切都假设没有其他跳转的方式,如防火墙或诸如此类。我也不知道你是如何配置虚拟机的。一般来说,您应该先在同一台机器上练习将它们连接起来。您可以共享当前使用的
docker run
命令吗?使用数据库url,如
spring.datasource.url=jdbc:postgresql://nameOfDomain:3306/nameOfDB
?无论如何,向我们展示代码或准备进行下一轮投票。docker run-p80:8080{{{imageId}}都在同一个虚拟机上运行(应用程序和数据库docker容器)?当托管在我本地机器上的tomcat中时,代码运行得非常好。。。如果部署在docker容器中,则无法从Java POV连接到DBGood应答,但他的主要问题是,他没有从docker网桥网络到数据库所在的外部IP地址的路由。@Neoarderson是对的,我正在寻找一种连接到外部IP地址的方法。你应该能够使用putty从windows连接到Linux