Node.js 运行时指南


Red Hat build of Node.js 22

使用 Node.js 22 开发在 OpenShift 和独立 RHEL 上运行的可扩展网络应用程序

Red Hat Customer Content Services

摘要

本指南详细介绍了使用 Node.js 运行时。

前言

本指南涵盖了概念,以及开发人员使用 Node.js 运行时所需的实用详情。

第 1 章 使用 Node.js 进行应用程序开发简介

本节介绍红帽运行时应用程序开发的基本概念。它还提供有关 Node.js 运行时的概述。

1.1. 使用 Red Hat Runtimes 进行应用程序开发概述

Red Hat OpenShift 是一个容器应用平台,提供一组云原生运行时。您可以使用运行时在 OpenShift 中开发、构建和部署 Java 或 JavaScript 应用。

使用 Red Hat Runtimes for OpenShift 的应用程序开发包括:

  • 一组运行时,如 Eclipse Vert.x、T Thorntail 和 Spring Boot 等,旨在在 OpenShift 中运行。
  • OpenShift 上云原生开发的规范方法。

OpenShift 可帮助您管理、保护和自动化应用的部署和监控。您可以将业务问题分成较小的微服务,并使用 OpenShift 部署、监控和维护微服务。您可以在应用中实施断路器、健康检查和服务发现等模式。

云原生开发充分利用云计算。

您可以在以下位置构建、部署和管理应用程序:

OpenShift Container Platform
红帽私有内部云。
Red Hat CodeReady Studio
用于开发、测试和部署应用程序的集成开发环境(IDE)。

本指南提供有关 Node.js 运行时的详细信息。有关其他运行时的更多信息,请参阅相关的 运行时文档

1.2. Node.js 概述

Node.js 基于 Google 中的 V8 JavaScript 引擎,允许您编写服务器端 JavaScript 应用程序。它根据事件和非阻塞操作提供 I/O 模型,供您编写高效的应用程序。Node.js 还提供名为 npm 的大型模块生态系统。查看 附加资源以进一步 阅读 Node.js。

Node.js 运行时允许您在 OpenShift 上运行 Node.js 应用程序和服务,同时提供 OpenShift 平台的所有优点和便利性,如滚动更新、持续交付管道、服务发现和 canary 部署。OpenShift 还可让您更轻松地实施常见微服务模式,如外部配置、健康检查、断路器和故障转移。

红帽提供不同的支持的 Node.js 版本。有关如何获取支持的更多信息,请参阅 从红帽获取 Node.js 和支持

1.2.1. Node.js 支持的架构

Node.js 支持以下构架:

  • x86_64 (AMD64)
  • OpenShift 环境中的 IBM Z (s390x)
  • OpenShift 环境中的 IBM Power Systems (ppc64le)

1.2.2. 支持联邦信息处理标准(FIPS)

Federal Information Processing Standards (FIPS)提供了改进计算机系统和网络之间的安全性和互操作性的指南和要求。FIPS 140-2 和 140-3 系列适用于硬件和软件级别的加密模块。

联邦信息处理标准(FIPS)出版物 140-2 是美国开发的计算机安全标准。政府和行业工作组来验证加密模块的质量。请参阅 NIST 计算机安全资源中心 上的官方 FIPS 出版物。

Red Hat Enterprise Linux (RHEL)提供了一个集成框架,可在系统范围内启用 FIPS 140-2 合规性。在 FIPS 模式中运行时,使用加密库的软件包会根据全局策略进行自我配置。

要了解合规要求,请参阅 红帽政府标准 页面。

Red Hat build of Node.js 在启用了 FIPS 的 RHEL 系统上运行,并使用 RHEL 提供的 FIPS 认证库。

1.2.2.2. 验证 Node.js 是否在 FIPS 模式下运行

您可以使用 crypto.fips 验证 Node.js 是否在 FIPS 模式下运行。

先决条件

  • 在 RHEL 主机上启用了 FIPS。

步骤

  1. 在 Node.js 项目中,创建一个名为 app.js 的应用文件,如 app.js
  2. app.js 文件中,输入以下详情:

    const crypto = require('crypto');
    console.log(crypto.fips);
    Copy to Clipboard Toggle word wrap
  3. 保存 app.js 文件。

验证

  • 在 Node.js 项目中,运行 app.js 文件:

    node app.js
    Copy to Clipboard Toggle word wrap

    如果启用了 FIPS,应用程序会将 1 打印到控制台中。如果禁用了 FIPS,应用程序会将 0 打印到控制台。

第 2 章 开发和部署 Node.js 应用程序

您可以创建新的 Node.js 应用,并将它们部署到 OpenShift。

2.1. 开发 Node.js 应用程序

对于基本的 Node.js 应用,您必须创建一个包含 Node.js 方法的 JavaScript 文件。

先决条件

  • 安装了 npm

步骤

  1. 创建新目录 myApp 并导航到该目录。

    $ mkdir myApp
    $ cd MyApp
    Copy to Clipboard Toggle word wrap

    这是应用程序的根目录。

  2. 使用 npm 初始化应用程序。

    此示例的其余部分假定入口点为 app.js,在运行 npm init 时会提示您设置该入口点。

    $ cd myApp
    $ npm init
    Copy to Clipboard Toggle word wrap
  3. 在名为 app.js 的新文件中创建入口点。

    app.js示例

    const http = require('http');
    
    const server = http.createServer((request, response) => {
      response.statusCode = 200;
      response.setHeader('Content-Type', 'application/json');
    
      const greeting = {content: 'Hello, World!'};
    
      response.write(JSON.stringify(greeting));
      response.end();
    });
    
    server.listen(8080, () => {
      console.log('Server running at http://localhost:8080');
    });
    Copy to Clipboard Toggle word wrap

  4. 启动应用程序。

    $ node app.js
    Server running at http://localhost:8080
    Copy to Clipboard Toggle word wrap
  5. 使用 curl 或浏览器,验证您的应用程序是否在 http://localhost:8080 中运行。

    $ curl http://localhost:8080
    {"content":"Hello, World!"}
    Copy to Clipboard Toggle word wrap

其他信息

2.2. 将 Node.js 应用程序部署到 Openshift

要将 Node.js 应用部署到 OpenShift,请将 nodeshift 添加到应用,配置 package.json 文件,然后使用 nodeshift 进行部署。

2.2.1. 为 OpenShift 部署准备 Node.js 应用

要为 OpenShift 部署准备 Node.js 应用程序,您必须执行以下步骤:

  • nodeshift 添加到应用程序。
  • openshiftstart 条目添加到 package.json 文件。

先决条件

  • 安装了 npm

步骤

  1. nodeshift 添加到应用程序中。

    $ npm install nodeshift --save-dev
    Copy to Clipboard Toggle word wrap
  2. openshiftstart 条目添加到 package.json 中的 scripts 部分。

    {
      "name": "myApp",
      "version": "1.0.0",
      "description": "",
      "main": "app.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "openshift": "nodeshift --expose --dockerImage=registry.access.redhat.com/rhscl/ubi8/nodejs-12",
        "start": "node app.js",
        ...
      }
      ...
    }
    Copy to Clipboard Toggle word wrap

    openshift 脚本使用 nodeshift 将应用部署到 OpenShift。

    注意

    Node.js 提供了通用基础镜像和 RHEL 镜像。有关镜像名称的更多信息,请参阅 Node.js 发行注记。

  3. 可选 :在 package.json 中添加一个 files 部分。

    {
      "name": "myApp",
      "version": "1.0.0",
      "description": "",
      "main": "app.js",
      "scripts": {
        ...
      },
      "files": [
        "package.json",
        "app.js"
      ]
      ...
    }
    Copy to Clipboard Toggle word wrap

    files 部分告知 nodeshift 在部署到 OpenShift 时要包含哪些文件和目录。nodeshift 使用 node-tar 模块根据您在 files 部分中列出的文件和目录创建 tar 文件。nodeshift 将应用部署到 OpenShift 时使用此 tar 文件。如果没有指定 files 部分,nodeshift 将发送整个当前目录,不包括:

    • node_modules/
    • .git/
    • tmp/

      建议您在 package.json 中包含 files 部分,以避免在部署到 OpenShift 时包括不必要的文件。

2.2.2. 将 Node.js 应用部署到 OpenShift

您可以使用 nodeshift 将 Node.js 应用部署到 OpenShift。

先决条件

  • 安装了 oc CLI 客户端。
  • 安装了 npm
  • 在配置路由时,请确保应用程序使用的所有端口都被正确公开。

步骤

  1. 使用 oc 客户端登录到您的 OpenShift 实例。

    $ oc login ...
    Copy to Clipboard Toggle word wrap
  2. 使用 nodeshift 将应用部署到 OpenShift。

    $ npm run openshift
    Copy to Clipboard Toggle word wrap

您可以使用 npm 将 Node.js 应用程序部署到独立 Red Hat Enterprise Linux 中。

先决条件

  • Node.js 应用。
  • 已安装 npm 6.14.8
  • 安装了 RHEL 7 或 RHEL 8。
  • 已安装 Node.js

步骤

  1. 如果您在项目的 package.json 文件中指定了额外的依赖项,请确保在运行应用程序前安装它们。

    $ npm install
    Copy to Clipboard Toggle word wrap
  2. 从应用的根目录部署应用。

    $ node app.js
    Server running at http://localhost:8080
    Copy to Clipboard Toggle word wrap

验证步骤

  1. 使用 curl 或浏览器验证应用程序是否在 http://localhost:8080中运行

    $ curl http://localhost:8080
    Copy to Clipboard Toggle word wrap

第 3 章 调试基于 Node.js 的应用

本节介绍调试基于 Node.js 的应用,以及在本地和远程部署中使用调试日志记录。

3.1. 远程调试

要远程调试应用,您需要在调试模式中启动它,并为它附加一个调试器。

3.1.1. 在本地启动应用程序并附加原生调试器

原生调试器允许您使用内置调试客户端调试基于 Node.js 的应用。

先决条件

  • 要调试的应用程序。

步骤

  1. 在启用了 debugger 的情况下启动应用。

    原生调试器会自动附加,并提供调试提示。

    启用 debugger 的示例应用

    $ node inspect app.js
    < Debugger listening on ws://127.0.0.1:9229/12345678-aaaa-bbbb-cccc-0123456789ab
    < For help see https://nodejs.org/en/docs/inspector
    < Debugger attached.
    ...
    debug>
    Copy to Clipboard Toggle word wrap

    如果您的应用程序具有不同的入口点,则需要更改命令以指定该入口点:

    $ node inspect path/to/entrypoint
    Copy to Clipboard Toggle word wrap

    例如,当使用 express 生成器 创建应用程序时,入口点默认设置为 ./bin/www

  2. 使用调试器提示执行 调试命令

3.1.2. 在本地启动应用程序并附加 V8 检查器

V8 检查器允许您使用 Chrome DevTools 等其他工具(如 Chrome DevTools )调试基于 Node.js 的应用,该工具使用 Chrome 调试协议

先决条件

步骤

  1. 在启用了 V8 检查器集成的情况下启动 您的应用程序。

    $ node --inspect app.js
    Copy to Clipboard Toggle word wrap

    如果您的应用程序具有不同的入口点,则需要更改命令以指定该入口点:

    $ node --inspect path/to/entrypoint
    Copy to Clipboard Toggle word wrap

    例如,当使用 express 生成器 创建应用程序时,入口点默认设置为 ./bin/www

  2. 附加 V8 检查器并执行调试命令。

    例如,如果使用 Google Chrome:

    1. 导航到 chrome://inspect
    2. 从以下 Remote Target 中选择您的应用程序。
    3. 现在,您可以看到应用程序的源,并可执行调试操作。

3.1.3. 以调试模式在 OpenShift 上启动应用程序

要在 OpenShift 上远程调试基于 Node.js 的应用程序,您必须将容器内的 NODE_ENV 环境变量设置为 development 并配置端口转发,以便您可以从远程调试器连接到应用程序。

先决条件

  • 您的应用程序在 OpenShift 上运行。
  • 安装了 oc 二进制文件。
  • 在目标 OpenShift 环境中执行 oc port-forward 命令的功能。

步骤

  1. 使用 oc 命令,列出可用的部署配置:

    $ oc get dc
    Copy to Clipboard Toggle word wrap
  2. 将应用程序的部署配置中的 NODE_ENV 环境变量设置为 development 来启用调试。例如:

    $ oc set env dc/MY_APP_NAME NODE_ENV=development
    Copy to Clipboard Toggle word wrap
  3. 如果应用程序没有设置为在配置更改时自动重新部署,请重新部署它。例如:

    $ oc rollout latest dc/MY_APP_NAME
    Copy to Clipboard Toggle word wrap
  4. 配置从本地机器到应用程序 pod 的端口转发:

    1. 列出当前运行的 pod 并找到包含应用程序的 pod:

      $ oc get pod
      NAME                            READY     STATUS      RESTARTS   AGE
      MY_APP_NAME-3-1xrsp          0/1       Running     0          6s
      ...
      Copy to Clipboard Toggle word wrap
    2. 配置端口转发:

      $ oc port-forward MY_APP_NAME-3-1xrsp $LOCAL_PORT_NUMBER:5858
      Copy to Clipboard Toggle word wrap

      在这里,$LOCAL_PORT_NUMBER 是您的本地机器上您选择的未使用端口号。记住远程调试器配置的这一数字。

  5. 附加 V8 检查器并执行调试命令。

    例如,如果使用 Google Chrome:

    1. 导航到 chrome://inspect
    2. 单击 配置
    3. 添加 127.0.0.1:$LOCAL_PORT_NUMBER.
    4. Done
    5. 从以下 Remote Target 中选择您的应用程序。
    6. 现在,您可以看到应用程序的源,并可执行调试操作。
  6. 完成调试后,在应用程序 pod 中取消设置 NODE_ENV 环境变量。例如:

    $ oc set env dc/MY_APP_NAME NODE_ENV-
    Copy to Clipboard Toggle word wrap

3.2. 调试日志记录

调试日志记录是在调试时向应用程序日志添加详细信息的一种方式。这可让您:

  • 在应用正常操作期间保持最小日志输出,以提高可读性并减少磁盘空间使用量。
  • 在解决问题时,查看有关应用程序内部工作的详细信息。

3.2.1. 添加调试日志记录

这个示例使用 debug 软件包,但还有 其他软件包 可以处理调试日志记录。

先决条件

  • 您有一个要调试的应用程序。

步骤

  1. 添加 调试日志记录 定义。

    const debug = require('debug')('myexample');
    Copy to Clipboard Toggle word wrap
  2. 添加 debug 语句。

    app.use('/api/greeting', (request, response) => {
      const name = request.query ? request.query.name : undefined;
      //log name in debugging
      debug('name: '+name);
      response.send({content: `Hello, ${name || 'World'}`});
    });
    Copy to Clipboard Toggle word wrap
  3. debug 模块添加到 package.json

    ...
    "dependencies": {
        "debug": "^3.1.0"
      }
    Copy to Clipboard Toggle word wrap

    根据您的应用程序,可能已经包含此模块。例如,在使用 express 生成器 创建应用程序时,debug 模块已添加到 package.json 中。

  4. 安装应用依赖项。

    $ npm install
    Copy to Clipboard Toggle word wrap

3.2.2. 访问 localhost 上的调试日志

在启动应用时,请使用 DEBUG 环境变量启用调试日志记录。

先决条件

  • 具有调试日志的应用程序。

步骤

  1. 启动应用以启用调试日志记录时,设置 DEBUG 环境变量。

    $ DEBUG=myexample npm start
    Copy to Clipboard Toggle word wrap

    debug 模块 可以使用通配符 来过滤调试信息。这使用 DEBUG 环境变量进行设置。

  2. 测试应用以调用调试日志。

    例如,以下命令基于一个 REST API 级别 0 应用程序,其中将 debug logging 设置为在 /api/greeting 方法中记录 name 变量:

    $ curl http://localhost:8080/api/greeting?name=Sarah
    Copy to Clipboard Toggle word wrap
  3. 查看应用程序日志以查看您的调试信息。

    myexample name: Sarah +3m
    Copy to Clipboard Toggle word wrap

3.2.3. 访问 OpenShift 上的 Node.js 调试日志

使用 OpenShift 中的应用 pod 中的 DEBUG 环境变量启用调试日志记录。

先决条件

  • 具有调试日志的应用程序。
  • 安装了 oc CLI 客户端。

步骤

  1. 使用 oc CLI 客户端登录您的 OpenShift 实例。

    $ oc login ...
    Copy to Clipboard Toggle word wrap
  2. 将您的应用程序部署到 OpenShift。

    $ npm run openshift
    Copy to Clipboard Toggle word wrap

    运行 openshift npm 脚本,该脚本将直接调用 nodeshift

  3. 查找 pod 的名称,并按照日志来监视它。

    $ oc get pods
    ....
    $ oc logs -f pod/POD_NAME
    Copy to Clipboard Toggle word wrap
    重要

    在 Pod 启动后,让此命令保持运行,并在新的终端窗口中执行剩余的步骤。这可让您 跟踪日志 并查看为其所做的任何新条目。

  4. 测试您的应用程序。

    例如,以下命令基于一个 REST API 级别 0 应用程序,其中将 debug logging 设置为在 /api/greeting 方法中记录 name 变量:

    $ oc get routes
    ...
    $ curl $APPLICATION_ROUTE/api/greeting?name=Sarah
    Copy to Clipboard Toggle word wrap
  5. 返回到您的 pod 日志,并注意日志中没有调试日志消息。
  6. 设置 DEBUG 环境变量以启用调试日志记录。

    $ oc get dc
    ...
    $ oc set env dc DC_NAME DEBUG=myexample
    Copy to Clipboard Toggle word wrap
  7. 返回到 pod 日志,以观察更新推出。

    推出更新后,您的 pod 将停止,您不再遵循日志。

  8. 查找新 pod 的名称并遵循日志。

    $ oc get pods
    ....
    $ oc logs -f pod/POD_NAME
    Copy to Clipboard Toggle word wrap
    重要

    在 Pod 启动后,让此命令保持运行,并在不同的终端窗口中执行剩余的步骤。这可让您 跟踪日志 并查看为其所做的任何新条目。具体来说,日志会显示您的调试信息。

  9. 测试应用来调用调试日志记录。

    $ oc get routes
    ...
    $ curl $APPLICATION_ROUTE/api/greeting?name=Sarah
    Copy to Clipboard Toggle word wrap
  10. 返回到您的 pod 日志,以查看 debug 信息。

    ...
    myexample name: Sarah +3m
    Copy to Clipboard Toggle word wrap

要禁用调试日志记录,请从 pod 中删除 DEBUG 环境变量:

$ oc set env dc DC_NAME DEBUG-
Copy to Clipboard Toggle word wrap

其他资源

有关环境变量的更多详细信息,请参阅 OpenShift 文档

附录 A. 关于 Nodeshift

Nodeshift 是一个用于运行使用 Node.js 项目的 OpenShift 部署的模块。

重要

Nodeshift 假设您已安装了 oc CLI 客户端,并且已登录到 OpenShift 集群。Nodeshift 还使用 oc CLI 客户端正在使用的当前项目。

Nodeshift 使用项目根的 .nodeshift 文件夹中的资源文件来处理创建 OpenShift 路由、服务和 DeploymentConfig。有关 Nodeshift 项目的更多信息,请参阅 Nodeshift 项目页面

附录 B. 更新示例应用程序的部署配置

example 应用的部署配置包含与 OpenShift 中部署和运行应用相关的信息,如路由信息或就绪度探测位置。示例应用的部署配置存储在一组 YAML 文件中。对于使用 Fabric8 Maven 插件的示例,YAML 文件位于 src/main/fabric8/ 目录中。对于使用 Nodeshift 的示例,YAML 文件位于 .nodeshift 目录中。

重要

Fabric8 Maven 插件和 Nodeshift 使用的部署配置文件不必是完整的 OpenShift 资源定义。Fabric8 Maven 插件和 Nodeshift 都可以获取部署配置文件,并添加一些缺失的信息来创建完整的 OpenShift 资源定义。Fabric8 Maven 插件生成的资源定义位于 target/classes/META-INF/fabric8/ 目录中。Nodeshift 生成的资源定义位于 tmp/nodeshift/resource/ 目录中。

先决条件

  • 一个现有的示例项目。
  • 安装了 oc CLI 客户端。

步骤

  1. 编辑现有的 YAML 文件,或使用您的配置更新创建额外的 YAML 文件。

    • 例如,如果您的示例已经配置了 readinessProbe 的 YAML 文件,您可以将 路径 值改为不同的可用路径来检查就绪度:

      spec:
        template:
          spec:
            containers:
              readinessProbe:
                httpGet:
                  path: /path/to/probe
                  port: 8080
                  scheme: HTTP
      ...
      Copy to Clipboard Toggle word wrap
    • 如果现有 YAML 文件中没有配置 readinessProbe,您也可以在同一目录中创建一个新的 YAML 文件,并具有 readinessProbe 配置。
  2. 使用 Maven 或 npm 部署示例的更新版本。
  3. 验证您的配置更新是否显示在您示例部署的版本中。

    $ oc export all --as-template='my-template'
    
    apiVersion: template.openshift.io/v1
    kind: Template
    metadata:
      creationTimestamp: null
      name: my-template
    objects:
    - apiVersion: template.openshift.io/v1
      kind: DeploymentConfig
      ...
      spec:
        ...
        template:
          ...
          spec:
            containers:
              ...
              livenessProbe:
                failureThreshold: 3
                httpGet:
                  path: /path/to/different/probe
                  port: 8080
                  scheme: HTTP
                initialDelaySeconds: 60
                periodSeconds: 30
                successThreshold: 1
                timeoutSeconds: 1
              ...
    Copy to Clipboard Toggle word wrap

其他资源

如果您使用基于 Web 的控制台或 oc CLI 客户端更新了应用程序的配置,请导出这些更改并将其添加到 YAML 文件中。使用 oc export all 命令显示您部署的应用程序的配置。

与使用本地主机中的 nodeshift 来部署 Node.js 应用类似,您可以将 Jenkins 配置为使用 nodeshift 来部署 Node.js 应用。

先决条件

  • 访问 OpenShift 集群。
  • 在同一 OpenShift 集群上运行的 Jenkins 容器镜像
  • 在 Jenkins 服务器上安装的 Node.js 插件
  • Node.js 应用程序配置为使用 nodeshift 和 Red Hat 基础镜像。

    使用带有 nodeshift 的红帽基础镜像的示例

    $ nodeshift --dockerImage=registry.access.redhat.com/rhscl/ubi8/nodejs-12 ...
    Copy to Clipboard Toggle word wrap

  • GitHub 中可用的应用源。

步骤

  1. 为您的应用程序创建新 OpenShift 项目:

    1. 打开 OpenShift Web 控制台并登录。
    2. 单击 Create Project 以创建新的 OpenShift 项目。
    3. 输入项目信息并点 Create
  2. 确保 Jenkins 有权访问该项目。

    例如,如果您为 Jenkins 配置了服务帐户,请确保帐户具有对应用的项目的 编辑 访问权限。

  3. Jenkins 服务器上创建一个新的自由风格的 Jenkins 项目

    1. 单击 New Item
    2. 输入名称,选择 Freestyle project,然后单击 OK
    3. Source Code Management 下,选择 Git 并添加应用的 GitHub URL。
    4. Build Environment 下,确保选中将 Node & npm bin/ 文件夹提供给 PATH,并且配置了 Node.js 环境。
    5. Build 下,选择 Add build step 并选择 Execute Shell
    6. Command 区域中添加以下内容:

      npm install -g nodeshift
      nodeshift --dockerImage=registry.access.redhat.com/rhscl/ubi8/nodejs-12 --namespace=MY_PROJECT
      Copy to Clipboard Toggle word wrap

      MY_PROJECT 替换为您的应用的 OpenShift 项目的名称。

    7. 点击 Save
  4. 从 Jenkins 项目的主页中,单击 Build Now,以验证您的应用构建并部署到应用的 OpenShift 项目。

    您还可以通过在应用的 OpenShift 项目中打开路由来验证应用程序是否已部署。

后续步骤

  • 考虑添加 GITSCM 轮询 或使用 Poll SCM 构建触发器。这些选项可让构建在每次新提交推送到 GitHub 存储库时运行。
  • 在配置 Node.js 插件时,请考虑将 nodeshift 添加为全局软件包。这可让您在添加 Execute Shell 构建步骤时省略 npm install -g nodeshift
  • 考虑添加在部署前执行测试的构建步骤。

附录 D. package.json 属性的分类

nodejs-rest-http/package.json

{
  "name": "nodejs-rest-http",
  "version": "4.0.0",
  "author": "Red Hat, Inc.",
  "license": "Apache-2.0",
  "scripts": {
    "pretest": "eslint --ignore-path .gitignore .",
    "test": "nyc --reporter=lcov mocha", 
1

    "prepare": "echo 'To confirm CVE compliance, run \"npm audit\"' ",
    "release": "standard-version -a",
    "openshift": "nodeshift --dockerImage=registry.access.redhat.com/ubi8/nodejs-16", 
2

    "start": "node ." 
3

  },
  "main": "./bin/www", 
4

  "standard-version": {
    "scripts": {
      "postbump": "npm run postinstall && node release.js",
      "precommit": "git add .openshiftio/application.yaml"
    }
  },
  "repository": {
    "type": "git",
    "url": "git://github.com/nodeshift-starters/nodejs-rest-http.git"
  },
  "files": [ 
5

    "package.json",
    "app.js",
    "public",
    "bin",
    "LICENSE"
  ],
  "bugs": {
    "url": "https://github.com/nodeshift-starters/nodejs-rest-http/issues"
  },
  "homepage": "https://github.com/nodeshift-starters/nodejs-rest-http",
  "devDependencies": { 
6

    "eslint": "^7.32.0",
    "eslint-config-semistandard": "^16.0.0",
    "js-yaml": "^4.1.0",
    "mocha": "^9.1.3",
    "nodeshift": "~8.6.0",
    "nyc": "~15.1.0",
    "standard-version": "^9.3.2",
    "supertest": "~6.1.6"
  },
  "dependencies": { 
7

    "body-parser": "~1.19.0",
    "debug": "^4.3.3",
    "express": "~4.17.1",
    "pino": "^7.5.1",
    "pino-debug": "^2.0.0",
    "pino-pretty": "^7.2.0"
  }
}
Copy to Clipboard Toggle word wrap

1
用于运行单元测试的 npm 脚本。使用 npm 运行 test 来运行
2
用于将此应用程序部署到 OpenShift Container Platform 的 npm 脚本。使用 npm 运行 openshift
3
用于启动此应用的 npm 脚本。使用 npm start 运行。
4
使用 npm 启动 时应用的主要入口点。
5
指定要包含在上传到 OpenShift Container Platform 的二进制文件中的文件。
6
要从 npm 注册表安装的开发依赖项列表。它们用于测试和部署到 OpenShift Container Platform。
7
要从 npm registry 中安装的依赖项列表。

附录 E. 额外的 Node.js 资源

附录 F. 应用程序开发资源

有关使用 OpenShift 进行应用程序开发的更多信息,请参阅:

附录 G. Source-to-Image (S2I)构建过程

Source-to-Image (S2I)是一种构建工具,用于从带有应用源的在线 SCM 存储库生成可重复生成的 Docker 格式容器镜像。借助 S2I 构建,您可以使用更短的构建时间轻松地将最新版本的应用程序交付到生产环境中,减少资源和网络使用量,提高安全性,以及一些其他优势。OpenShift 支持多种 构建策略和输入源

如需更多信息,请参阅 OpenShift Container Platform 文档中的 Source-to-Image (S2I)构建 章节。

您必须为 S2I 进程提供三个元素来编译最终容器镜像:

  • 托管在在线 SCM 存储库中的应用程序源,如 GitHub。
  • S2I 构建器镜像,充当汇编镜像的基础,并提供运行应用程序的生态系统。
  • 另外,您还可以提供 S2I 脚本使用的环境变量和参数

根据 S2I 脚本中指定的指令,将应用程序源和依赖项注入到构建器镜像中,并生成运行汇编的应用程序的 Docker 格式容器镜像。如需更多信息,请参阅 OpenShift Container Platform 文档中的 S2I 构建要求、构建选项 以及如何构建工作 部分。

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部