docker - 将 Docker 容器部署到 Cloud Foundry 时,MQTT 端口连接被拒绝
问题描述
我已经构建了一个 docker 映像,其中包含一个带有 MQTT 和 Mongodb 模块的 C++ 应用程序。当我尝试使用 Cloud Foundry 将其部署到我的云时,出现了以下错误:
ERR 无法与端口 1883 建立 TCP 连接:连接被拒绝
鉴于 1883 是 MQTT 的监听端口。我在CloudFoundry Docker上发现,我唯一需要做的就是在我的 Dockerfile 中包含EXPOSE 1883,我已经这样做了。
谁能解释我到目前为止还没有考虑到什么?谢谢你的阅读。
解决方案
引用来自github commit的声明。
您使用
EXPOSE
Dockerfile 中的关键字或--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 上不可用,或者它需要比指定的运行状况检查超时更长的时间才能启动和运行,从而导致运行状况检查失败。
请检查此以获取更多信息。
希望这可以帮助。
推荐阅读
- mysql - 需要将价格表插入mysql
- wordpress - Wordpress - 在 php 生成的 html 代码中检索帖子的永久链接
- java - JMX mbean 内存保留和垃圾回收
- google-apps-script - 谷歌收件箱的谷歌脚本自动转发
- javascript - 我无法解决的 JavaScript 挑战
- android - 在 android 中使用存储访问框架时需要 READ_EXTERNAL_STORAGE 权限
- android - getSupportFragmentManager:不兼容的类型
- c++ - C++ 重载括号 [] 运算符获取和设置不同的返回类型
- r - 将 abline 添加到图例
- python - 从 db 解析 pypyodbc 数据