cod*_*tsu 3 apache-kafka docker docker-compose
我有一个docker-compose包含多个服务容器定义的文件.其中一个服务Apache Kafka在同一个docker-compose运行中进行通信.
所以我有像这样的kafka docker定义:
kafka:
image: spotify/kafka
ports:
- "2181:2181"
- "9092:9092"
environment:
ADVERTISED_HOST: 127.0.0.1
ADVERTISED_PORT: 9092
Run Code Online (Sandbox Code Playgroud)
我在同一个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
Run Code Online (Sandbox Code Playgroud)
不要忘记设置ADVERTISED_HOSTto kafka(或者你如何命名你的kafka容器docker-compose).
您可以使用Docker Compose Links功能.如果您kafka从其他容器提供到容器的链接,Docker Compose将确保您的其他容器可以通过其主机名访问Kafka容器 - 您不必知道其IP地址.
例:
kafka:
image: spotify/kafka
ports:
- "2181:2181"
- "9092:9092"
environment:
ADVERTISED_HOST: 127.0.0.1
ADVERTISED_PORT: 9092
myservice:
image: foo
links:
- kafka:kafka
Run Code Online (Sandbox Code Playgroud)
这将允许您myservice的容器通过kafka主机名访问Kafka容器.因此,从myservice容器中,您可以执行类似curl http://kafka:9092访问Kafka容器上的服务的操作.
Docker-Compose通过DNS执行此操作,它在容器中创建主机名/ IP映射,允许您在不知道其IP地址的情况下访问容器.
| 归档时间: |
|
| 查看次数: |
603 次 |
| 最近记录: |