2016-07-17 171 views
0

我在node.js express應用中託管Mosca MQTT代理,並嘗試在Bluemix中的容器組中運行它。我在使用端口1883連接到MQTT時遇到問題,即使我在Dockerfile中公開了端口1883。訪問Docker容器中的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上。

任何建議爲什麼不?

回答

1

IBM Containers Scalable Group功能不支持非HTTP流量爲暴露的端口。

使用此功能,外部URL綁定到服務於該平臺的Go路由器。在外部URL上對端口80發出的HTTP請求將發送到您在內部容器主機上進行配置期間選擇的端口。您無法直接訪問外部容器上的端口。

如果要公開MQTT流量,請將容器作爲單個實例啓動,而不是組。您可以選擇公開端口1883 & 3000,從而允許您連接HTTP請求和MQTT客戶端。

+0

但是IBM聲明,單個實例容器僅用於測試目的,並且在流量大的情況下我將無法擴展。 – HeineSkov

+0

燒結實例容器適用於生產目的。 您的服務是否期望流量有巨大的變化? –

+0

是的。我如何最好地支持這個使用單個實例容器? – HeineSkov

相關問題