是否可以使用属性文件而不是环境变量来启动/配置汇合的泊坞窗图像?

时间:2017-11-22 12:37:01

标签: docker apache-kafka apache-zookeeper confluent

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正在进行,以便在容器内生成属性。

1 个答案:

答案 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镜像时,您注意到它们会呈现给相应的服务属性)。