首页 > 解决方案 > 将 Docker 容器部署到 Cloud Foundry 时,MQTT 端口连接被拒绝

问题描述

我已经构建了一个 docker 映像,其中包含一个带有 MQTT 和 Mongodb 模块的 C++ 应用程序。当我尝试使用 Cloud Foundry 将其部署到我的云时,出现了以下错误:

ERR 无法与端口 1883 建立 TCP 连接:连接被拒绝

鉴于 1883 是 MQTT 的监听端口。我在CloudFoundry Docker上发现,我唯一需要做的就是在我的 Dockerfile 中包含EXPOSE 1883,我已经这样做了。
谁能解释我到目前为止还没有考虑到什么?谢谢你的阅读。

标签: dockermqttcloud-foundry

解决方案


引用来自github commit的声明。

您使用EXPOSEDockerfile 中的关键字或 --expose标志公开端口到docker run. 公开端口是一种记录使用了哪些端口的方法,但实际上并不映射或打开任何端口。暴露端口是可选的。

如果您想在端口 1883 上访问 MQTT,请在 docker run 命令中使用-p 选项。

在你的情况下

docker run -itd -p 1883:1883 mqtt-image-name

希望这可以帮助。

更新:

对不起,我误解了,我通过了官方文档。

EXPOSE应该在你的情况下工作。

你得到的错误ERR Failed to make TCP connection to port 1883: connection refused意味着你的应用程序或云代工厂有问题。

该错误可能是因为您的应用程序由于故障而在端口 1883 上不可用,或者它需要比指定的运行状况检查超时更长的时间才能启动和运行,从而导致运行状况检查失败。

请检查以获取更多信息。

希望这可以帮助。


推荐阅读