【问题标题】:Openshift node.js successful deployment, but "Application is not available"Openshift node.js 部署成功,但“应用程序不可用”
【发布时间】: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_IPprocess.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/… 上给出了一些关于您应该使用哪些设置的非常简短的说明

标签: node.js openshift


【解决方案1】:


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

port: 8000
protocol: TCP
targetPort: 8000

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 2014-04-30
    • 2013-04-05
    相关资源
    最近更新 更多