kafka容器上的动态KAFKA_ADVERTISED_HOST_NAME

问题描述 投票:1回答:1

我在docker容器中使用kafka。其中一个要求是kafka可供本机在主机上运行的生产者使用。这就是我将KAFKA_ADVERTISED_HOST_NAME设置为主机ip的原因。

我的docker-compose.yml看起来像这样:

version: '2'
services: 
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 192.168.1.10
      KAFKA_CREATE_TOPICS: "test:1:1"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERES: PLAINTEXT://localhost:9092
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock  

它的工作原理。

问题是,我希望能够在其他机器上使用这个docker-compose文件,我不知道他们的IP可能是什么。

尝试将ip更改为像'kafka'这样的名称导致它对主机不可用(尽管仍然可以从其他容器中获得)。

有没有办法在docker-compose文件中使用主机IP而不“硬编码”它(这样它将在不同的机器上成为不同的IP地址)?

还有另一种解决这个问题的方法吗?

docker apache-kafka docker-compose
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.