kafka continer

时间:2018-05-05 21:17:46

标签: docker apache-kafka docker-compose

我在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地址)?

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