如何从Docker容器访问远程IP上未容器化的数据库?

问题描述

我正在尝试将Java Web服务打包在Docker中。我在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:postgresql://yourIpAddress:8082/nameOfDB

连接到主机

这一切都假设没有其他障碍,例如防火墙或其他。我也不知道您是如何配置虚拟机的。通常,您应该练习将它们连接到同一台计算机上,以便首先了解该想法。