我正在尝试使用Visual Studio Docker Tools为项目设置开发环境。
我有一堆.net核心和很少的完整fx微服务,它们通过RabbitMq进行通信。 RabbitMq位于基于linux的docker容器内,.net核心微服务也是如此,它们连接到docker-compose文件中的同一网络。通过使用容器名称作为主机名连接到RabbitMq,.Net核心微服务没有问题。
但是当谈到基于Windows的容器时,存在一个问题,即网络不在Windows和Linux docker引擎之间共享,因此我无法通过使用容器名称将基于Windows的微服务连接到RabbitMq服务(使用主机IP将是对于开发机器来说很弱,因为对于其他开发人员来说它会有所不同,并且会带来一些配置开销。)
AFAIK swarm模式可以用来确保这样的通信,但是它更适合测试/ prod环境而不是开发,并且在这种情况下,很酷的Visual Studio容器调试功能将丢失(它运行docker-compose up命令)。
那么在单个主机上进行混合系统跨容器通信的最佳方式是什么?
答案 0 :(得分:2)
创建一个hosts文件,其中RabbitMQ Docker容器的IP设置为名称。例如,使用Docker Toolbox,您可以将以下内容放入主机:
192.168.99.100 docker
然后每个开发人员都可以设置IP,docker-compose
可以使用该名称。