我在node.js express app中托管了一个Mosca MQTT代理,并尝试在Bluemix中的容器组中运行它。即使我在Dockerfile中暴露了端口1883,我仍然无法使用端口1883连接到MQTT。
MQTT经纪人非常简单:
var settings = {
port: 1883,
};
var mqttserver = new mosca.Server(settings);
var httpServer = http.createServer(app);
mqttserver.attachHttpServer(httpServer);
var port = (process.env.VCAP_APP_PORT || 3000);
httpServer.listen(port, function(){
console.log('Express server listening on port ' + port);
});
在我的Dockerfile中,我公开了端口80和1883
EXPOSE 1883
EXPOSE 80
当我在Bluemix中创建容器组时,我选择端口1883。 我可以在端口80上连接到代理,但不能在端口1883上连接。
为什么不提出任何建议?
答案 0 :(得分:1)
IBM Containers Scalable Group功能不支持公开端口的非HTTP流量。
使用此功能,外部URL绑定到为该平台提供服务的Go路由器。对外部URL上的端口80发出的HTTP请求将发送到您在内部容器主机上配置期间选择的端口。您无法从外部直接访问容器上的端口。
如果要公开MQTT流量,请将容器作为单个实例而不是组启动。您可以选择公开端口1883& 3000,允许您连接HTTP请求和MQTT客户端。