【发布时间】:2017-03-20 20:22:24
【问题描述】:
我有一个docker-compose 文件,其中包含多个服务容器定义。其中一项服务在同一个 docker-compose 运行中与 Apache Kafka 通信。
所以我有这样的 kafka docker 定义:
kafka:
image: spotify/kafka
ports:
- "2181:2181"
- "9092:9092"
environment:
ADVERTISED_HOST: 127.0.0.1
ADVERTISED_PORT: 9092
我的服务定义在同一个 docker-compose 文件中。在服务的启动脚本中,我必须以某种方式找出 Kafka 实例的 IP 地址。
我知道,我可以使用 docker inspect 之类的东西来找出容器使用的 IP 地址。
但是如何在 docker-compose 环境中动态执行呢?
编辑
所以,正确的配置应该是(谢谢@nwinkler):
kafka:
image: spotify/kafka
ports:
- "2181:2181"
- "9092:9092"
environment:
ADVERTISED_HOST: kafka
ADVERTISED_PORT: 9092
myservice:
image: foo
links:
- kafka:kafka
不要忘记将ADVERTISED_HOST 设置为kafka(或者你如何在docker-compose 中命名你的kafka 容器)。
【问题讨论】:
-
您应该能够使用
kafka作为主机名来连接到kafka容器。
标签: docker apache-kafka docker-compose