如何使用Docker IP地址更新Kafkaconfiguration文件

我在Docker容器中运行Kafka。 Kafka需要连接到Zookeeper,所以我在另一个容器中运行Zookeeper。 我在OSX上运行Docker,所以我的虚拟机有IP地址: 192.168.99.99

我无法弄清楚的是,如何更新我的Kafka Docker安装指向Zookeeper在它自己独立的Docker容器(即IP地址为192.168.99.9和端口2181内运行的实例?

Kafka有一个名为server.properties的configuration文件,它具有我可以设置的zookeeper.connect属性,但是我希望这个值能够被dynamic覆盖,而不是在这里对IP进行硬编码。 我如何做到这一点?

而且,作为一个额外的问题,我希望我的Docker文件可以跨操作系统使用 – 所以我所做的任何事情都应该在Linux上工作。

您不应该需要在该configuration文件中设置一个IP:

通过docker-compose v2(docker 1.10+),创build一个桥接networking,这意味着两个容器都在该networking中并且可以互相看到。
有关详情,请参阅“ 撰写networking ”。

如果Zookeeper暴露其端口2181,来自Kafka的configuration文件可以简单地通过其容器名称引用zookeeper。
这可以在任何Docker上运行(Mac上的boot2docker或者Linux上的本地docker)