Openshift node.js成功部署,但“应用程序不可用”

时间:2017-09-17 18:49:43

标签: node.js openshift

我在使用Openshift运行node.js应用程序时遇到问题。

我已经将我的openshift项目设置为从git repo中提取。

我的server.listen电话是这样的:

var port = process.env.OPENSHIFT_NODEJS_PORT || process.env.PORT || 8080;
var ip = process.env.OPENSHIFT_NODEJS_IP || process.env.IP || '127.0.0.1';

var server = http.createServer(myServerFunction);
server.listen(port, ip);

拉动和构建工作正常。我可以在pod终端中看到我的应用程序正在运行,因为有一些console.log输出表明这一点。我还可以看到process.env.OPENSHIFT_NODEJS_IPprocess.env.IP都不存在,因此端口默认为8080

如果我进入pod的终端并执行curl http://localhost:8080,我会看到我希望从我的应用程序中获得的html输出。

但是,当我单击概述选项卡并找到我的应用程序的外部网址(格式为http://<application>-<domain>.1d35.starter-us-east-1.openshiftapps.com)时,单击该链接会导致openshift的“应用程序不可用”错误页面。

在我看来,我的节点应用程序运行得非常好,但没有连接到外部URL。我怀疑8080不是正确的端口,并且我需要进行更多配置才能使我的nodejs应用程序在process.env.OPENSHIFT_NODEJS_PORT接收值。

在其他stackoverflow答案中,我还看到0.0.0.0作为未设置process.env.OPENSHIFT_NODEJS_IP时的默认值。这会有所作为吗?

总体而言,如何将外部网址链接到我的nodejs服务器?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

前往
应用 > 服务,
点击您的服务,
单击操作 > 编辑 YAML,
在端口部分,
将 port 和 targetPort 更改为您的 nodejs 应用程序正在运行的端口,
就我而言,它在端口 8000 上,
所以我给了这样

port: 8000
protocol: TCP
targetPort: 8000

另外,检查应用程序是否在“0.0.0.0”上运行,而不是“127.0.0.1”