Docker部署Node-RED与Mosquitto后MQTT In节点无法连接求助
解决Node-RED MQTT节点无法连接Docker中Mosquitto的问题
检查Docker网络配置
- 确保Node-RED和Mosquitto处于同一个Docker网络。默认创建的容器可能不在同一网络,需手动创建并加入:
- 创建自定义网络:
docker network create mqtt-net - 重启Mosquitto加入该网络:
docker run --name mosquitto --network mqtt-net -p 1883:1883 eclipse-mosquitto - 重启Node-RED加入该网络:
docker run --name node-red --network mqtt-net -p 1880:1880 nodered/node-red
- 创建自定义网络:
- Node-RED的MQTT配置中,不要用localhost或127.0.0.1,而是用Mosquitto的容器名(比如
mosquitto)作为代理地址——容器内部的localhost指向自身,而非宿主机。
核对Mosquitto配置细节
- 确认
mosquitto.conf中开启了允许外部连接的配置:listener 1883 allow_anonymous true # 未设置账号密码时需开启匿名访问;若有账号密码,设为false并配置密码文件 - 如果设置了账号密码,Node-RED的MQTT配置必须填写正确的用户名和密码,且Mosquitto已通过
mosquitto_passwd生成密码文件并在配置中指定:password_file /etc/mosquitto/passwd
检查Node-RED的MQTT节点配置
- 确保MQTT节点的端口号与Mosquitto暴露的一致(默认1883,修改过则对应调整)。
- 若Mosquitto未配置加密,Node-RED里不要勾选启用TLS选项,否则会导致连接失败。
排查容器日志
- 查看Mosquitto连接日志,确认是否有Node-RED的连接请求:
docker logs mosquitto,若有拒绝日志可针对性调整配置。 - 查看Node-RED日志排查报错:
docker logs node-red,日志中的错误信息可直接定位问题(如认证失败、网络不可达等)。
内容的提问来源于stack exchange,提问作者Juan
相关产品推荐
相关产品推荐

