Docker Compose中Spring Boot Kafka客户端的spring.kafka.bootstrap-servers环境变量配置方法
解决方案:正确配置Spring Boot Kafka属性到Docker Compose环境变量
问题根源
你踩的这个坑其实挺常见的——Spring Boot对配置属性转环境变量有严格的规则,你之前写错了变量名:
- 规则是把配置中的
.替换为_,所有字母转大写,并且严格保留原配置的单复数形式 - 原配置
spring.kafka.bootstrap-servers的复数后缀-servers,对应环境变量的BOOTSTRAP_SERVERS,你之前写成了单数的BOOTSTRAP_SERVER,这就是配置不生效的核心原因。
修改后的完整服务配置
把你的mc3-service环境变量部分修正为以下内容即可:
mc3-service: image: ksonv/mc3-service:0.0.1-SNAPSHOT ports: - "8103:8103" depends_on: - kafka environment: SPRING_KAFKA_BOOTSTRAP_SERVERS: kafka:9092 SPRING_KAFKA_CONSUMER_GROUP_ID: mc3
额外补充说明
关于你用kafka:9092的选择是完全正确的:
- 在Docker Compose的默认网络中,容器之间通过服务名(这里是
kafka)互相访问,kafka服务内部的监听端口是9092(对应你Kafka配置里的PLAINTEXT://kafka:9092) - 如果你写成
localhost:29092,容器内部的localhost指向的是容器自身,不是宿主机,反而会导致无法连接Kafka服务。
内容的提问来源于stack exchange,提问作者ks_on_v
相关产品推荐
相关产品推荐

