为了账号安全,请及时绑定邮箱和手机立即绑定

容器启动时应用程序错误地解析了 Docker 别名

容器启动时应用程序错误地解析了 Docker 别名

Go
一只甜甜圈 2023-06-19 17:22:40
我正在创建两个 docker-compose 文件(主要是因为我不想在开发我的应用程序时必须不断重启我的基础设施。)它们需要驻留在同一个 docker 网络上,以便它们可以使用别名进行连接。这些文件类似于以下内容:应用程序:version: '3.5'networks:  default:    name: kafka_network    driver: bridgeservices:  client:    build:      context: .      dockerfile: ./Dockerfile    working_dir: /app/    command: ./client    environment:      BADDR: kafka:9092      CGROUP: test_group      TOPICS: my-topic基础设施:version: '3.5'networks:  default:    name: kafka_network    driver: bridgeservices:  zookeeper:    image: confluentinc/cp-zookeeper:latest    ports:      - 2181:2181    environment:      ZOOKEEPER_CLIENT_PORT: 2181      ZOOKEEPER_TICK_TIME: 2000  kafka:    image: confluentinc/cp-kafka:latest    depends_on:      - zookeeper    ports:      - 9092:9092    environment:      KAFKA_BROKER_ID: 1      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1我的问题是客户端没有正确解析 kafka:9092 ...它总是解析为127.0.0.1:9092.错误:Broker:  kafka:9092Consumer_Group:  my_groupTopics:  [my-topic]Created Consumer rdkafka#consumer-1% Error: GroupCoordinator: Connect to ipv4#127.0.0.1:9092 failed: Connection refused (after 0ms in state CONNECT)在本地运行时,它似乎运行良好,所以我真的很困惑可能是什么问题。如果有人对此有所了解,我将不胜感激!当地的:[procyclinsur@P-428 client]$ ./clientBroker:  localhost:9092Consumer_Group:  my-groupTopics:  [my-topic]Created Consumer rdkafka#consumer-1% AssignedPartitions: [my-topic[0]@unset]% Message on my-topic[0]@0:hello mate
查看完整描述

1 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

这是与您的 Kafka 配置相关的问题——根本与 docker 无关。

旁观:

  KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092

这意味着您为您的 Kafka 设置了 2 个侦听器,您的客户端在连接时将在 Kafka 的协议中收到这些侦听器。

因此,当您连接到端口 9092 时,您的客户端将尝试通过“localhost”获取 Kafka,而当您连接到端口 29092 时,您的客户端将尝试通过“kafka”DNS 名称获取 Kafka。

它在本地为您工作,因为您的 Kafka 容器通过 docker 端口部分暴露在 localhost:9092 上。

查看完整回答
反对 回复 2023-06-19
  • 1 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信