centos/nodejs-8-centos7Node.js 8容器镜像是构建和运行各种Node.js 8应用程序和框架的基础平台。Node.js基于Chrome的JavaScript运行时构建,用于轻松构建快速、可扩展的网络应用。它采用事件驱动的非阻塞I/O模型,使其轻量高效,非常适合在分布式设备上运行的数据密集型实时应用。
该镜像包含Node.JS 8作为S2I(源到镜像)基础镜像,用户可选择基于RHEL、CentOS或Fedora的版本。RHEL镜像可在Red Hat容器目录获取,CentOS镜像在Podman Hub提供,Fedora镜像则位于Fedora Registry。生成的镜像可使用podman运行。
注意:尽管本文档示例中使用
podman命令,但所有此类调用均可替换为docker,参数保持不变。
以下示例假设使用rhscl/nodejs-8-rhel7镜像(在OpenShift中可通过nodejs:8镜像流标签获取)。
构建nodejs-sample-app示例应用:
bashoc new-app nodejs:8~[***] --context-dir=8/test/test-app/
在已安装S2I的系统上构建:
bashs2i build [***] --context-dir=8/test/test-app/ rhscl/nodejs-8-rhel7 nodejs-sample-app
bashcurl 127.0.0.1:8080
应用开发人员可通过以下环境变量配置运行时行为:
NODE_ENV"production"DEV_MODE"true"时使用nodemon自动重载服务器;设为"true"会将NODE_ENV默认值改为"development"(若未显式设置)"false"NPM_RUNpackage.json的scripts部分定义npm run "start"HTTP_PROXYHTTPS_PROXYNPM_MIRROR注:可在代码库的
.s2i/environment文件中以键值对形式定义环境变量,例如:DATABASE_USER=sampleUser
通过DEV_MODE环境变量(取值true或false)启用/禁用开发模式,支持热部署和调试功能。调试端口通过DEBUG_PORT指定(仅在DEV_MODE=true时有效)。
bashpodman run --env DEV_MODE=true my-image-id
bashpodman run --env DEV_MODE=true DEBUG_PORT=5454 my-image-id
bashpodman run --env DEV_MODE=false my-image-id
默认配置:
DEV_MODE=false,DEBUG_PORT=5858(仅DEV_MODE=true时生效)
开发模式下,容器内源代码的更改会立即反映到运行中的应用。
bashpodman exec -it <CONTAINER_ID> /bin/bash
进入容器后,当前目录为/opt/app-root/src(应用源代码目录)。
在OpenShift中,可通过oc rsync将本地文件复制到pod:
bashoc rsync ./local-dir/ <POD_NAME>:/opt/app-root/src/
警告:
生产模式默认执行npm start(运行package.json的start脚本),开发模式使用nodemon(默认执行main属性指定的脚本,无main时执行start脚本)。为确保行为一致,建议移除package.json中的main属性。
注:
oc rsync仅在OpenShift 3.1及以上版本可用。
DockerfileDockerfile.rhel7Dockerfile.rhel8Dockerfile.fedora

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务