【问题标题】:How to configure docker-compose.yml for Kafka local development?如何为 Kafka 本地开发配置 docker-compose.yml?
【发布时间】:2019-01-25 22:11:26
【问题描述】:

我正在尝试在 Docker 容器中设置 Kafka 以进行本地开发。我的 docker-compose.yml 如下所示:

version: '3'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181"
    hostname: zookeeper
  kafka:
    image: wurstmeister/kafka
    command: [start-kafka.sh]
    ports:
      - "9092"
    hostname: kafka
    environment:
      KAFKA_CREATE_TOPICS: "UploadFile:1:1,GetFile:1:1,TrackUpload:1:1,GetEmailContent:1:1" # topic:partition:replicas
      KAFKA_ADVERTISED_HOST_NAME: kafka # docker-machine ip
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_PORT: 9092
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - "zookeeper"

不幸的是,我在本地主机(不在 docker 中)上运行的节点应用程序无法连接到它。我使用了 url 'kafka:9092' 甚至 'localhost:9092'。没有任何效果。知道发生了什么吗?

【问题讨论】:

标签: docker apache-kafka docker-compose


【解决方案1】:

为 kafka 服务公开主机端口 9092,您应该能够从应用程序或主机通过“localhost:9092”进行连接。

  ....
  kafka:
    image: wurstmeister/kafka
    command: [start-kafka.sh]
    ports:
      - "9092:9092"
  ....

【讨论】:

  • 1) 端口已经给定 2) 我认为这行不通(请参阅上面的重复链接)
  • 该应用程序不在 docker 中,它在主机上运行。在不暴露主机端口或使用主机网络模式的情况下,他无法将该应用程序连接到 kafka 容器。我相信这应该至少在 docker 的上下文中解决他的连接问题,不确定 kafka 配置或依赖项。
  • 我了解该应用程序不在 Docker 中。我的观点是,需要额外的 Kafka 配置,称为“广告侦听器”。像这样简单地暴露端口是行不通的
  • 谢谢,它成功了。但现在我不能从消费者内部生产。只是一个消费者不能生产和调用另一个消费者。知道为什么吗?
  • 如果你设置了端口,你不能再用 "docker-compose scale kafka=3" 进行扩展,这就是为什么你必须使用 - "9092" 不是吗?如果设置 -'9092:9092' 会出现端口冲突...
猜你喜欢
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 2022-09-29
  • 1970-01-01
  • 1970-01-01
  • 2020-03-10
相关资源
最近更新 更多