首页 > 解决方案 > Docker 容器中的 Producer 需要向本地 topic 发送 mgs

问题描述

我用 python 制作了一个应用程序,它制作消息并使用 KafkaProducer 将它们发送到我本地机器上的 Kafka 主题。使用 KafkaConsumer,我检查了消息是否进入 Kafka 主题,并且工作正常。

现在我想把这个应用程序放在一个 Docker 容器中,并且仍然让它向本地 Topic 发送消息。

我制作了一个 Dockerfile 并构建了一个 Dockerimage 并在容器中运行它。它给出了退出代码 1,我有以下日志:

        Traceback (most recent call last):
    File "/usr/local/lib/python3.8/runpy.py", line 185, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
    File "/usr/local/lib/python3.8/runpy.py", line 111, in _get_module_details
   __import__(pkg_name)
   File "/app/app.py", line 9, in <module>
   producer = KafkaProducer(bootstrap_servers=['localhost:9092'],
   File "/usr/local/lib/python3.8/site-packages/kafka/producer/kafka.py", line 381, in __init__
   client = KafkaClient(metrics=self._metrics, metric_group_prefix='producer',
   File "/usr/local/lib/python3.8/site-packages/kafka/client_async.py", line 244, in __init__
   self.config['api_version'] = self.check_version(timeout=check_timeout)
   File "/usr/local/lib/python3.8/site-packages/kafka/client_async.py", line 900, in check_version
   raise Errors.NoBrokersAvailable()
   kafka.errors.NoBrokersAvailable: NoBrokersAvailable

对我来说,该应用程序在容器中运行时似乎与我的 Kafka 服务器没有连接。但是当它在容器外运行时我有连接。

如果我想让这个 Kafka 连接也在容器内工作,我需要采取哪些额外步骤?

标签: pythondockerapache-kafka

解决方案


推荐阅读