我正在开发一个在docker上具有3个服务的项目。每个容器上安装的每个服务。 当它们都在同一个网络上时,彼此之间相互交流完美,并且在docker-compose.yml文件中配置正确。
每个服务都使用其余的API相互通信::port。
这很完美,因为docker通过cobtainer名称\服务名称自动解析了每个容器的正确IP。
有时,我需要调试主机上的一项服务,而不是将其作为docker的一部分。因此,我将停止要调试的相关服务,并在主机上启动它(我们将其称为服务B),而服务A和服务C仍在泊坞窗中。在这种情况下:
服务B(现在在主机上)仍可以与http://serviceA:3000和http://ServiceC:5000进行通信,但是服务A和服务C(都在docker上)无法与ServiceB(在主机上暂时与之通信)调试):http://serviceB:4000。
我找到了解决方法,并且我正在更改服务A和服务C的配置文件,以使用http://host.docker.internal:4000而不是http://serviceB:4000来调用服务B,但是我可以不想记住一直在调试时更改配置文件,因为实际上我有50个服务,而不仅仅是3个。
有什么建议吗?