python - 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 连接也在容器内工作,我需要采取哪些额外步骤?
解决方案
推荐阅读
- c++ - 将 TopoDS_Face 对象分配给其子对象编译没有错误,但我有 3 个 valgrind 错误
- java - 阻止微服务实例向 Eureka Service Discovery 注册
- python - 如何在张量流 LinearRegressor 中强制偏差为零?
- c# - C# WPF 应用程序和 python 脚本之间的双向通信
- mysql - 表中有多个 json 列有什么缺点吗
- javascript - 编写一个 angularToHTML 函数
- laravel - Laravel/Passport 客户端 user_id 有什么用?
- dart - 如何在颤动中删除 GridView 项目?
- c# - JsonIgnore 不适用于序列化中的 MemberSerialization.Fields
- ionic-framework - 如何在不将我重定向到另一个页面的情况下保持 BarcodeScanner 屏幕打开?