如何解决在Docker容器中访问Kafka代理
我一生无法找到有关此方面的信息,如果这很明显,请原谅我。
我正在将Kafka代理的端口发布到我的主机(MacOS),并且无法从主机进行连接。然后,即使我exec
进入容器,也无法ping localhost:9092
或curl
。
我还尝试达到KAFKA_ADVERTISED_LISTENERS
的{{1}}值,这给了我PLAINTEXT://kafka1:9092
这是我的docker-compose文件的相关位:
ping: cannot resolve PLAINTEXT://kafka1:9092
Dockerfile如下:
version: '3'
services:
zookeeper:
container_name: zookeeper
image: confluentinc/cp-zookeeper:latest
environment:
ZOOKEEPER_CLIENT_PORT: 2181
KAFKA_OPTS: "-Dzookeeper.4lw.commands.whitelist=*"
ports:
- "2181:2181"
kafka1:
build: .
container_name: "kafka1"
depends_on:
- zookeeper
ports:
- "8778"
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka1:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OPTS: '-javaagent:/usr/jolokia/agents/jolokia-jvm.jar=host=0.0.0.0'
有什么想法吗?
解决方法
如果您尝试从容器内部订阅主题,则应将引导服务器指定为kafka1:9092
。此设置对我来说很好,我可以通过本地机器将其卷曲
curl localhost:9092
curl: (52) Empty reply from server
此外,您可以尝试添加更多的env变量
kafka1:
environment:
- BOOTSTRAP_SERVERS=kafka2:9092
- ZOOKEEPER=zookeeper:2181