【发布时间】:2022-11-23 23:40:22
【问题描述】:
我想使用 network_mode: bridge for kafka 以便能够通过 localhost:9092 从另一个服务到达 kafka
我正在尝试使用 provectus/kafka-ui 但是当我打开消费者菜单时出现以下错误
我的 docker-compose.yml 文件:
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:latest
ports:
- 8080:8080
depends_on:
- kafka
environment:
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092
KAFKA_CLUSTERS_0_JMXPORT: 9997
kafka:
image: johnnypark/kafka-zookeeper
ports:
- "2181:2181"
- "9092:9092"
network_mode: bridge
environment:
ADVERTISED_HOST: 127.0.0.1
NUM_PARTITIONS: 1
volumes:
- /var/run/docker.sock:/var/run/docker.sock
日志错误:
2022-01-13 09:16:50,014 错误 [parallel-5] c.p.k.u.s.MetricsService:无法收集集群默认信息
java.lang.IllegalStateException:为集群默认创建 AdminClient 时出错
【问题讨论】:
-
在我的例子中,问题是由于 network_mode: bridge。 The default bridge network is deprecated and will most likely not provide the requirements that Kafka needs (containers only talk to each other via IP) 出于这个原因,我安装了如下示例中的结构。现在一切正常。 github.com/provectus/kafka-ui/blob/master/docker/kafka-ui.yaml
-
我不认为桥接网络是你的问题。这是 Docker Compose 的默认行为,因此它被弃用了。您确实需要将
ADVERTISED_HOST: 更改为kafka才能使同一网络中的容器正常工作。此外,您用于 Kafka 的图像已经一年多没有更新了,所以我建议您使用不同的图像(使用单独的 Zookeeper 容器)
标签: apache-kafka