如何在Docker容器中配置独立版Confluent Kafka REST Proxy
问题描述
我正按照官方指引通过Docker镜像运行独立版Confluent Kafka REST Proxy,也查看了官方的配置选项说明,但没找到如何向Docker镜像添加配置选项的方法。想请教:如何或在哪里设置配置选项,才能让运行在Docker容器中的Proxy读取到这些配置?
我当前使用的docker-compose.yml内容如下:
--- version: '2' services: rest-proxy: image: confluentinc/cp-kafka-rest:7.5.0 ports: - 8082:8082 hostname: rest-proxy container_name: rest-proxy environment: KAFKA_REST_HOST_NAME: rest-proxy KAFKA_REST_LISTENERS: "http://0.0.0.0:8082" KAFKA_REST_BOOTSTRAP_SERVERS: $BOOTSTRAP_SERVERS KAFKA_REST_SECURITY_PROTOCOL: "$SECURITY_PROTOCOL" KAFKA_REST_SASL_JAAS_CONFIG: $SASL_JAAS_CONFIG KAFKA_REST_SASL_MECHANISM: $SASL_MECHANISM KAFKA_REST_CLIENT_BOOTSTRAP_SERVERS: $BOOTSTRAP_SERVERS KAFKA_REST_CLIENT_SECURITY_PROTOCOL: "SASL_SSL" KAFKA_REST_CLIENT_SASL_JAAS_CONFIG: $SASL_JAAS_CONFIG KAFKA_REST_CLIENT_SASL_MECHANISM: $SASL_MECHANISM
解决方法
Confluent的Docker镜像支持两种主流配置方式,具体操作如下:
1. 通过环境变量配置(推荐,你当前正在使用的方式)
Confluent的镜像会自动将前缀为KAFKA_REST_的环境变量转换为Kafka REST Proxy的配置项,转换规则很简单:
- 去掉前缀
KAFKA_REST_ - 大写字母转小写,下划线替换为点号(
.)
比如你配置的KAFKA_REST_BOOTSTRAP_SERVERS,最终会对应配置文件中的bootstrap.servers;KAFKA_REST_SASL_JAAS_CONFIG对应sasl.jaas.config。
如果要添加新配置,直接按这个规则在environment块里加就行。例如要设置最大请求字节数,就添加:
KAFKA_REST_MAX_REQUEST_SIZE: 10485760
这会对应配置项max.request.size=10485760。
2. 通过挂载自定义配置文件
如果需要批量配置或者更复杂的设置,可以直接挂载自己的kafka-rest.properties文件到容器默认配置路径:
- 本地创建
kafka-rest.properties文件,写入需要的配置项,比如:
bootstrap.servers=your-bootstrap-servers listeners=http://0.0.0.0:8082 sasl.mechanism=PLAIN sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="your-user" password="your-pass"; # 其他自定义配置 max.request.size=10485760
- 修改
docker-compose.yml,添加volumes配置,把本地文件挂载到容器内的/etc/kafka-rest/kafka-rest.properties路径:
--- version: '2' services: rest-proxy: image: confluentinc/cp-kafka-rest:7.5.0 ports: - 8082:8082 hostname: rest-proxy container_name: rest-proxy volumes: - ./kafka-rest.properties:/etc/kafka-rest/kafka-rest.properties # 注意:挂载自定义配置文件后,原有环境变量的对应配置会被覆盖,需按需调整
内容的提问来源于stack exchange,提问作者Rick Schumeyer
相关产品推荐
相关产品推荐

