我正在尝试让wurstmeister/kafka-docker在docker-machine上以群模式工作,到目前为止,还没有太多的运气。然而,我不确定我是否理解HOSTNAME_COMMAND是如何工作的。这是docker-compose.yml:
version: '3.2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka:latest
ports:
- target: 9094
published: 9094
protocol: tcp
mode: host
environment:
HOSTNAME_COMMAND: "docker info | grep ^Name: | cut -d' ' -f 2"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: INSIDE://:9092,OUTSIDE://_{HOSTNAME_COMMAND}:9094
KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9094
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
volumes:
- /var/run/docker.sock:/var/run/docker.sock因此,我认为HOSTNAME_COMMAND获得了主机名,但对于_语法:_{HOSTNAME_COMMAND}
这是docker-compose的一部分吗?卡夫卡?或者这是wurstmeister的附加功能?我假设它是为参与群的每个节点评估的,对吗?我找不到任何文档来解释这是从哪里来的。
发布于 2019-09-11 06:40:49
它是wurstmeister Dockerfile CMD script中的“一个插件”。
为每个Docker服务评估该值,并在启动时在容器内调用,该容器仅在该命令上调用eval。
https://github.com/wurstmeister/kafka-docker/blob/master/start-kafka.sh#L52-L63
除了在_{NAME}脚本中对整个值进行字符串替换的模式之外,bash语法并不重要
https://stackoverflow.com/questions/57878822
复制相似问题