【发布时间】:2021-11-20 04:56:20
【问题描述】:
我正在尝试在 docker 容器上部署 Apache Kafka(不是 Confluent Kafka),并使用 kafka-python 的生产者和消费者 api 连接到它。生产者api和消费者api应该能够在docker容器之外运行。
管道由一个 zookeeper 实例和 3 个 Kafka 代理组成,每个代理位于一个单独的容器中。以下是我用来初始化容器的 docker-compose 代码。
services:
zookeeper-1:
container_name: zookeeper-1
image: zookeeper:2.7.0
build:
context: ./zookeeper
volumes:
- ./config/zookeeper-1/zookeeper.properties:/kafka/config/zookeeper.properties
kafka-1:
container_name: kafka-1
image: kafka:2.7.0
build:
context: .
volumes:
- ./config/kafka-1/server.properties:/kafka/config/server.properties
- ./data/kafka-1/:/tmp/kafka-logs/
kafka-2:
container_name: kafka-2
image: kafka:2.7.0
build:
context: .
volumes:
- ./config/kafka-2/server.properties:/kafka/config/server.properties
- ./data/kafka-2/:/tmp/kafka-logs/
kafka-3:
container_name: kafka-3
image: kafka:2.7.0
build:
context: .
volumes:
- ./config/kafka-3/server.properties:/kafka/config/server.properties
- ./data/kafka-3/:/tmp/kafka-logs/
我能够在 docker 映像中使用 cli 生成和使用消息。
我希望能够从 docker 容器外部访问它。我知道它需要通过添加侦听器来修改 docker-compose 脚本,但我是 Docker 新手,无法正确添加侦听器。
请提出所需的补充,以便我可以在同一台机器上从容器外部访问 Kafka。
P.S.:我已经访问了大部分关于 SO 的 kafka docker 容器讨论,包括“Connect to Kafka running in Docker”、“Interact with kafka docker container from outside of docker host [duplicate]”,但他们没有回答我的问题。
【问题讨论】:
-
1) 在一台机器上运行多个代理不会改善任何东西,而且会浪费您的硬盘寿命和空间 2)
build和image不应该一起使用。 3) 您目前的配置是什么样的 4) 您了解您需要听众,那么您尝试了哪些内容以及链接帖子中不清楚的地方,以便未来的读者可以从集中的答案中受益?
标签: docker apache-kafka docker-compose