The docs表示cp-zookeeper和cp-kafka图像是通过环境变量配置的。
ZooKeeper图像使用前缀为ZOOKEEPER_的变量,其变量表示与zookeeper.properties文件中显示的完全相同。例如,要设置clientPort,tickTime和syncLimit,请运行以下命令:
docker run -d \
--net=host \
--name=zookeeper \
-e ZOOKEEPER_CLIENT_PORT=32181 \
-e ZOOKEEPER_TICK_TIME=2000 \
-e ZOOKEEPER_SYNC_LIMIT=2
confluentinc/cp-zookeeper:3.3.1
我更愿意提供zookeeper.properties
(kafka的server.properties),而不是指定ZOOKEEPER_ *(KAFKA_ *)环境变量。这有点可能吗?
在我目前的设置中使用"非汇合" kafka我只是在/ etc / kafka上安装一个包含属性的配置卷,然后用它启动kafka,但是看confluent docker images我可以看到这不会起作用,因为它有一些特殊之处templating-magic正在进行,以便在容器内生成属性。
答案 0 :(得分:2)
您可以通过使用docker命令使用--env-file
开关而不是在命令行中键入每个环境变量来实现您所描述的内容。
例如,如果您首先将所需的属性存储到文件中,请说kafka.properties
:
KAFKA_ZOOKEEPER_CONNECT=localhost:32181
KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:29092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1
然后你可以通过运行:
来启动你的kafka容器 docker run -d --net=host --name=kafka --env-file ./kafka.properties confluentinc/cp-kafka:3.3.1
但是,属性键的名称应该与每个docker镜像期望的内容相匹配(当您运行每个docker镜像时,您注意到它们会呈现给相应的服务属性)。