登录
首页 >  Golang >  Go问答

Docker别名解析错误导致容器启动时应用程序失败

来源:stackoverflow

时间:2024-03-13 12:33:34 152浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《Docker别名解析错误导致容器启动时应用程序失败》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

我正在创建两个 docker-compose 文件(主要是因为我不想在开发应用程序时不断重新启动基础设施。),它们需要驻留在同一个 docker 网络上,以便它们可以使用别名进行连接。

这些文件类似于以下内容:

应用程序:

version: '3.5'

networks:
  default:
    name: kafka_network
    driver: bridge
services:
  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: bridge

services:
  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:9092
consumer_group:  my_group
topics:  [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]$ ./client
Broker:  localhost:9092
Consumer_Group:  my-group
Topics:  [my-topic]
Created Consumer rdkafka#consumer-1
% AssignedPartitions: [my-topic[0]@unset]
% Message on my-topic[0]@0:
hello mate

解决方案


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

查看:

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

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

因此,当您在端口 9092 上连接时,您的客户端将尝试在“localhost”处获取 kafka,而当您在端口 29092 上连接时,您的客户端将尝试在“kafka”dns 名称处获取 kafka。

它在本地为您工作,因为您的 kafka 容器通过 docker ports 部分公开在 localhost:9092 上。

这里有一篇文章很好地描述了该主题:https://rmoff.net/2018/08/02/kafka-listeners-explained/

本篇关于《Docker别名解析错误导致容器启动时应用程序失败》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>