是否有可能使用属性文件而不是环境variables来启动/configuration汇合泊坞窗图像?

该文档指出,cp-zookeeper和cp-kafka映像是通过环境variablesconfiguration的。

ZooKeeper映像使用前缀为ZOOKEEPER_的variables,其variables与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 (server.properties for kafka),而不是指定ZOOKEEPER_ *(KAFKA_ *)环境variables。 这有可能吗?

在我目前的“非融合”kafka设置中,我只需在/ etc / kafka上挂载一个包含属性的configuration卷,然后启动kafka,但是看着融合的docker映像,我可以看到这是行不通的,一些特殊的模板 – 魔法继续为了生成容器内的属性。

您可以通过使用--env-file命令使用--env-file开关来实现您所描述的内容,而不是在命令行中键入每个环境variables。

例如,如果您首先将所需的属性存储到文件中,那么假设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

尽pipe如此,属性键的名字应该与每个docker映像所期望的相同(当每个docker映像运行时,你注意到这些名称会被渲染到相应的服务属性中)。