You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot应用无法连接Docker Compose部署的Kafka集群求助

问题分析与解决方案

首先看你的docker-compose.yml,最直接的错误是Spring Boot应用的Kafka地址拼写错误:

在my-app服务的环境变量中,BOOTSTRAP_SERVERS=kafka1:9092,但你的Kafka服务名称是kafka-1,正确配置应为BOOTSTRAP_SERVERS=kafka-1:9092。Docker网络中服务名是节点唯一标识符,拼写错误会导致应用无法定位到Kafka节点,这是连接失败的核心原因。

另外还有几个优化点,避免后续出现其他问题:

  • Kafka就绪等待:depends_on仅保证容器启动顺序,不代表Kafka服务已完全就绪。可以给my-app添加启动等待逻辑,比如用wait-for-it.sh脚本,或在应用启动前检查Kafka 9092端口是否可用。
  • Schema Registry配置修正:Schema Registry的SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS里的PLAINTEXT_INTERNAL://localhost:19092无效,因为你的Kafka未定义PLAINTEXT_INTERNAL监听,应改为与Kafka一致的PLAINTEXT_HOST://localhost:19092,或直接去掉该部分,仅保留PLAINTEXT://kafka-1:9092。

修正后的关键配置片段

my-app服务环境变量

my-app:
  container_name: my-app
  build: .
  depends_on:
    - kafka-1
  environment:
    - SERVER_PORT=8080
    - BOOTSTRAP_SERVERS=kafka-1:9092  # 修正服务名拼写
    - SCHEMA_REGISTRY_URL=http://schema-registry:8081
    - AVRO_SUBJECT_VERSION=latest
    - CACHE_MAX_SIZE_BUFFERING=0
  ports:
    - "9898:8080"
  networks:
    - ams_net

Schema Registry配置

schema-registry:
  # ... 其他配置不变
  environment:
    # ... 其他配置不变
    SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://kafka-1:9092,PLAINTEXT_HOST://localhost:19092
    # ... 其他配置不变

最后重启Docker Compose服务:

docker-compose down && docker-compose up --build

内容的提问来源于stack exchange,提问作者geno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 23:30:25