我正在尝试使用docker compose在Mac上启动和运行Kafka。
这是我的docker-compose.yml文件:
version: '2'
services:
zookeeper:
image: ********
network_mode: "host"
hostname: "zookeeper"
environment:
- "MYID=1"
ports:
- "2181:2181"
- "3888:3888"
mysql:
image: *******
network_mode: "host"
hostname: "mysql"
environment:
- "MYSQL_ROOT_PASSWORD=password"
ports:
- "3306:3306"
schema-registry:
image: ********
network_mode: "host"
hostname: "schema-registry"
environment:
- "ZOOKEEPER_URL=127.0.0.1:2181"
ports:
- "8081:8081"
kafka:
image: **********
network_mode: "host"
hostname: "kafka"
environment:
- "SERVICE_NAME=localhost"
- "SERVICE_TAGS=syracuse-dev"
- "KAFKA_ADVERTISED_HOST_NAME=localhost"
- "KAFKA_ZOOKEEPER_CONNECT=localhost:2181"
- "KAFKA_NUM_PARTITIONS=10"
- "KAFKA_LISTENERS=PLAINTEXT://:9092"
- "KAFKA_BROKER_ID=1"
- "KAFKA_DEFAULT_REPLICATION_FACTOR=1"
ports:
- "9092:9092"
- "7203:7203"
除了Kafka之外,其他所有东西都可以正常运行。当Kafka加载时,一旦发现我会寻找以下错误来寻找Zookeeper。
Found zookeeper
Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: moby: moby: unknown error
通过从每个容器中删除“network_mode:” host“行,并将Zookeeper网址设置为:” zookeeper:2181“,我可以启动Kafka并使其运行。
我不清楚network_mode的作用以及为什么它阻止kafka运行。我希望有人能对此有所启发并教育我。
非常感激
最佳答案
您可以代替
- "KAFKA_ADVERTISED_HOST_NAME=localhost"
- "KAFKA_ZOOKEEPER_CONNECT=localhost:2181"
为他们提供Zookeeper容器的名称,在您的情况下为
zookeeper
。- "KAFKA_ADVERTISED_HOST_NAME=zookeeper"
- "KAFKA_ZOOKEEPER_CONNECT=zookeper:2181"
有帮助吗?
关于networking - Kafka Docker network_mode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39372817/