centos/nodejs-4-centos7此容器镜像包含Node.JS 4,作为Node.JS 4应用程序的S2I基础镜像。用户可选择基于RHEL或CentOS的构建器镜像。RHEL镜像可在Red Hat容器目录获取,镜像名为registry.access.redhat.com/rhscl/nodejs-4-rhel7;CentOS镜像可在Docker Hub获取,镜像名为centos/nodejs-4-centos7。生成的镜像可使用Docker运行。
Node.js 4容器镜像作为基础平台,用于构建和运行各种Node.js 4应用程序及框架。Node.js是基于Chrome JavaScript运行时构建的平台,便于快速构建高速、可扩展的网络应用。Node.js采用事件驱动的非阻塞I/O模型,使其轻量高效,非常适合在分布式设备上运行的数据密集型实时应用。
要使用独立S2I构建简单的nodejs-sample-app应用,然后通过Docker运行生成的镜像,请执行以下步骤:
bash$ s2i build [***] --context-dir=4/test/test-app/ rhscl/nodejs-4-rhel7 nodejs-sample-app $ docker run -p 8080:8080 nodejs-sample-app
bash$ s2i build [***] --context-dir=4/test/test-app/ centos/nodejs-4-centos7 nodejs-sample-app $ docker run -p 8080:8080 nodejs-sample-app
bash$ curl 127.0.0.1:8080
应用开发者可通过以下环境变量配置镜像的运行时行为:
NODE_ENVNodeJS运行时模式(默认:"production")
DEV_MODE设为"true"时,将使用nodemon自动重新加载服务器(默认:"false")。设置DEV_MODE="true"会将NODE_ENV默认值改为"development"(若未显式设置)。
NPM_RUN选择自定义运行时模式,定义于package.json文件的scripts部分(默认:npm run "start")。使用DEV_MODE时,用户定义的运行脚本不可用。
HTTP_PROXY在装配期间使用npm代理
HTTPS_PROXY在装配期间使用npm代理
NPM_MIRROR构建过程中使用自定义NPM registry镜像下载包
定义环境变量的一种方式是在仓库的.s2i/environment文件中以键值对形式包含它们。例如:DATABASE_USER=sampleUser
DEV_MODE”以下package.json示例包含scripts.dev条目。可在应用的package.json文件中定义自定义NPM_RUN脚本。
要更改npm install期间的日志输出级别,可设置npm_config_loglevel环境变量。详见npm-config。
此镜像支持开发模式,可通过环境变量DEV_MODE切换,取值为true或false。开发模式支持两项功能:
调试端口可通过环境变量DEBUG_PORT指定,仅当DEV_MODE=true时有效。
在开发模式下运行容器的简单示例命令:
bashdocker run --env DEV_MODE=true my-image-id
指定调试端口5454在开发模式下运行:
bash$ docker run --env DEV_MODE=true DEBUG_PORT=5454 my-image-id
在生产模式下运行:
bash$ docker run --env DEV_MODE=false my-image-id
默认情况下,DEV_MODE设为false,DEBUG_PORT设为5858,但DEBUG_PORT仅在DEV_MODE=true时生效。
作为开发模式的一部分,此镜像支持热部署。启用开发模式后,运行中容器内源代码的任何更改将立即反映在运行的Node.js应用中。
要在运行中的容器内修改源代码,使用Docker的exec命令:
bash$ docker exec -it <CONTAINER_ID> /bin/bash
执行docker exec进入运行中的容器后,当前目录为/opt/app-root/src,即应用源代码所在位置。
若已将容器部署到OpenShift,可使用oc rsync将本地文件复制到OpenShift pod中运行的远程容器。
s2i-nodejs容器镜像默认使用npm start命令运行Node.js应用,即执行package.json中的start脚本。在开发模式下,应用使用nodemon运行,nodemon默认查找package.json中的main属性并执行该脚本;若main属性不存在,则执行start脚本。为确保生产和开发模式功能一致,建议移除main属性。
以下是包含main属性和start脚本的package.json示例:
json{ "name": "node-echo", "version": "0.0.1", "description": "node-echo", "main": "example.js", <--- main属性 "dependencies": { }, "devDependencies": { "nodemon": "*" }, "engine": { "node": "*", "npm": "*" }, "scripts": { "dev": "nodemon --ignore node_modules/ server.js", "start": "node server.js" <-- start脚本 }, "keywords": [ "Echo" ], "license": "", }
oc rsync仅在OpenShift 3.1+版本中可用。
Dockerfile及其他源代码可在[***]


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