无法使用 docker compose 将 kafka 连接到具有不同端口的 zookeeper

Unable to connect kafka to zookeeper with different port using docker compose

我正在尝试将我的 kafka 设置与 zookeeper contain 连接,包含暴露到默认端口以外的其他端口,但是当我将端口更改为 2181 时,容器 运行ning 正常但是如果我更改我的 yml 文件中的端口我无法 运行 它,任何指导都会有所帮助。

version: '3'

services:
 zookeeper:
  image: wurstmeister/zookeeper
  container_name: zookeeper
  ports:
   - "2182:2181"
 
 kafka:
  image: wurstmeister/kafka
  container_name: kafka
  ports:
   - "9092:9092"
  environment:
   KAFKA_ADVERTISED_HOST_NAME: localhost
   KAFKA_ZOOKEEPER_CONNECT: zookeeper:2182
 

正如@DavidMaze 建议的那样。您尝试连接暴露在外的2182。只需尝试以下操作。

version: '3'

services:
 zookeeper:
  image: wurstmeister/zookeeper
  container_name: zookeeper
  ports:
   - "2182:2181"
 
 kafka:
  image: wurstmeister/kafka
  container_name: kafka
  ports:
   - "9092:9092"
  environment:
   KAFKA_ADVERTISED_HOST_NAME: localhost
   KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

Zookeeper 有自己的修改客户端端口的配置,您似乎将其与主机端口转发混淆了。

但是,wurstmeister 容器没有配置它的环境变量,因此您只能使用 2181。

你可能甚至不应该有一个端口转发,因为没有理由从主机连接到 Zookeeper

另外值得指出的是,该图像自 2019 年以来就没有更新过,Zookeeper 从那时起已经发布了几个版本