【发布时间】:2021-02-07 17:20:24
【问题描述】:
我在让 node.js 应用程序在 Openshift 上运行时遇到问题。
我已将我的 openshift 项目设置为从 git 存储库中提取。
我的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_IP 和process.env.IP 都不存在,因此端口默认为8080。
如果我进入 pod 的终端并执行 curl http://localhost:8080,我会准确地看到我的应用程序所期望的 html 输出。
但是,当我单击概览选项卡并找到我的应用程序的外部 URL(格式为 http://<application>-<domain>.1d35.starter-us-east-1.openshiftapps.com)时,单击该链接会导致 openshift 的“应用程序不可用”错误页面。
在我看来,我的节点应用程序运行良好,但未连接到外部 url。我怀疑8080 不是正确的端口,我需要进行更多配置才能让我的nodejs 应用程序接收process.env.OPENSHIFT_NODEJS_PORT 的值。
在其他 stackoverflow 答案中,当 process.env.OPENSHIFT_NODEJS_IP 未设置时,我还看到 0.0.0.0 作为默认值。这会有所作为吗?
总的来说,我怎样才能使外部 url 链接到我的 nodejs 服务器?
感谢您的帮助!
【问题讨论】:
-
您必须使用 0.0.0.0 而不是 127.0.0.1 否则它将不接受来自 pod 外部的连接请求。
-
我已经切换到端口 0.0.0.0,一切正常!!如果你写下答案,我会给你支票。还有一个指向推荐
0.0.0.0作为默认IP的文档的链接,或者解释为什么该特定IP将代替localhost工作可能对像我这样的其他人来说很棒! :) -
在docs.openshift.com/container-platform/3.6/dev_guide/… 上给出了一些关于您应该使用哪些设置的非常简短的说明