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

配置docker-compose端口与主机名解决kafka-python连接Kafka报错问题

问题根因

  • app-python服务错误配置了端口映射:ports: - "9093:9093" 属于冗余配置,python服务作为Kafka客户端仅需主动发起连接,不需要暴露、映射任何Kafka相关端口,该配置还会导致宿主机端口冲突。
  • Kafka服务同时配置了KAFKA_ADVERTISED_HOST_NAME和KAFKA_ADVERTISED_LISTENERS,wurstmeister/kafka镜像会优先读取前者参数覆盖监听器配置,导致内部网络监听器不生效。
  • 默认的depends_on仅控制容器启动顺序,不会等待Kafka broker完全初始化完成就启动python容器,容易出现初始化阶段连接失败的问题。

修复步骤

1. 调整docker-compose.yml配置

删除冗余的端口配置、冲突的Kafka参数,增加服务健康检查保证启动顺序符合依赖要求,修改后完整配置如下:

version: '3'

services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
    healthcheck:
      test: ["CMD", "zkServer.sh", "status"]
      interval: 5s
      timeout: 5s
      retries: 3

  kafka:
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    expose:
      - "9093"
    environment:
      KAFKA_CREATE_TOPICS: "client-pusher:1:1"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka:9093,OUTSIDE://localhost:9092
      KAFKA_LISTENERS: INSIDE://0.0.0.0:9093,OUTSIDE://0.0.0.0:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      zookeeper:
        condition: service_healthy
    healthcheck:
      test: ["CMD-SHELL", "kafka-topics.sh --list --zookeeper zookeeper:2181 || exit 1"]
      interval: 5s
      timeout: 10s
      retries: 5

  app-python:
    build: .
    depends_on:
      kafka:
        condition: service_healthy

2. 优化consumer.py连接配置

增加Kafka客户端重试参数,避免初始化阶段临时不可用导致的报错:

consumer = KafkaConsumer(
    'client-pusher',
    bootstrap_servers=['kafka:9093'],
    auto_offset_reset='earliest',
    enable_auto_commit=True,
    group_id='my-group-id',
    value_deserializer=lambda x: json.loads(x.decode('utf-8')),
    # 新增重试相关配置
    api_version_auto_timeout_ms=30000,
    retries=10
)

3. 重启服务验证

先清理历史残留容器和卷,避免旧配置影响:
docker-compose down -v
重新构建启动服务:
docker-compose up --build

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:48:01