此容器镜像包含Node.JS 8作为https://github.com/openshift/source-to-image%E5%9F%BA%E7%A1%80%E9%95%9C%E5%83%8F%EF%BC%8C%E9%80%82%E7%94%A8%E4%BA%8E%E6%82%A8%E7%9A%84Node.JS 8应用程序。用户可以选择基于RHEL或CentOS的构建器镜像。RHEL镜像可在Red Hat容器目录中获取,CentOS镜像可在https://hub.docker.com/r/centos/%E4%B8%8A%E8%8E%B7%E5%8F%96%EF%BC%8CFedora%E9%95%9C%E5%83%8F%E5%8F%AF%E5%9C%A8Fedora Registry中获取。生成的镜像可使用https://github.com/containers/libpod%E8%BF%90%E8%A1%8C%E3%80%82
注意:虽然本README中的示例使用podman,但您可以将任何此类调用替换为docker,参数相同。
Node.js 6容器是构建和运行各种Node.js 6应用程序和框架的基础平台。Node.js是基于Chrome JavaScript运行时构建的平台,可轻松构建快速、可扩展的网络应用程序。Node.js采用事件驱动的非阻塞I/O模型,使其轻量且高效,非常适合在分布式设备上运行的数据密集型实时应用程序。
在此部分,我们假设您使用的是rhscl/nodejs-6-rhel7镜像,可通过OpenShift中的nodejs:6镜像流标签获取。
在OpenShift中构建一个简单的https://github.com/sclorg/s2i-nodejs-container/tree/master/6/test/test-app%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%8F%AF%E9%80%9A%E8%BF%87%E4%BB%A5%E4%B8%8B%E6%AD%A5%E9%AA%A4%E5%AE%9E%E7%8E%B0%EF%BC%9A
oc new-app nodejs:6~https://github.com/sclorg/s2i-nodejs-container.git --context-dir=6/test/test-app/
在已安装独立https://github.com/openshift/source-to-image%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%E7%B3%BB%E7%BB%9F%E4%B8%8A%EF%BC%8C%E4%B9%9F%E5%8F%AF%E4%BD%BF%E7%94%A8%E4%BB%A5%E4%B8%8B%E5%91%BD%E4%BB%A4%E6%9E%84%E5%BB%BA%E7%9B%B8%E5%90%8C%E7%9A%84%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%9A
$ s2i build https://github.com/sclorg/s2i-nodejs-container.git --context-dir=6/test/test-app/ rhscl/nodejs-6-rhel7 nodejs-sample-app
访问应用程序:
$ curl 127.0.0.1:8080
应用程序开发人员可使用以下环境变量配置此镜像的运行时行为:
NODE_ENV
NodeJS运行时模式(默认:"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开启或关闭此模式。DEV_MODE可设为true或false。
开发模式支持两个功能:
调试端口可通过环境变量DEBUG_PORT指定。DEBUG_PORT仅在DEV_MODE=true时有效。
在开发模式下运行容器的简单示例命令:
podman run --env DEV_MODE=true my-image-id
要在开发模式下以5454为调试端口运行容器:
$ podman run --env DEV_MODE=true DEBUG_PORT=5454 my-image-id
要在生产模式下运行容器:
$ podman run --env DEV_MODE=false my-image-id
默认情况下,DEV_MODE设为false,DEBUG_PORT设为5858,但DEBUG_PORT仅在DEV_MODE=true时相关。
作为开发模式的一部分,此镜像支持热部署。如果启用开发模式,运行中容器内更改的任何源代码将立即反映在运行的Node.js应用程序中。
要在运行中的容器中更改源代码,使用Podman的https://github.com/containers/libpod%E5%91%BD%E4%BB%A4%EF%BC%9A
$ podman exec -it <CONTAINER_ID> /bin/bash
通过https://github.com/containers/libpod%E8%BF%9B%E5%85%A5%E8%BF%90%E8%A1%8C%E4%B8%AD%E7%9A%84%E5%AE%B9%E5%99%A8%E5%90%8E%EF%BC%8C%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%BC%9A%E8%AE%BE%E7%BD%AE%E4%B8%BA%60/opt/app-root/src%60%EF%BC%8C%E5%8D%B3%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%BA%90%E4%BB%A3%E7%A0%81%E6%89%80%E5%9C%A8%E4%BD%8D%E7%BD%AE%E3%80%82
如果您已将容器部署到OpenShift,可使用oc rsync将本地文件复制到OpenShift pod中运行的远程容器。
警告:
s2i-nodejs容器镜像的默认行为是使用npm start命令运行Node.js应用程序,这会执行package.json文件中的start脚本。在开发模式下,应用程序使用nodemon命令运行。nodemon的默认行为是查找package.json文件中的main属性并执行该脚本。如果package.json中没有main属性,它将执行start脚本。因此,为了在生产模式和开发模式之间实现统一的功能,用户应移除main属性。
以下是package.json文件示例,其中main属性和start脚本已适当标记:
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和其他源代码可在https://github.com/sclorg/s2i-nodejs-container%E8%8E%B7%E5%8F%96%E3%80%82%E5%9C%A8%E8%AF%A5%E4%BB%93%E5%BA%93%E4%B8%AD%EF%BC%8C%E6%82%A8%E8%BF%98%E5%8F%AF%E4%BB%A5%E6%89%BE%E5%88%B0%E5%85%B6%E4%BB%96%E7%89%88%E6%9C%AC%E7%9A%84Python%E7%8E%AF%E5%A2%83Dockerfile%E3%80%82CentOS%E7%9A%84Dockerfile%E5%90%8D%E4%B8%BA%60Dockerfile%60%EF%BC%8CRHEL7%E7%9A%84Dockerfile%E5%90%8D%E4%B8%BA%60Dockerfile.rhel7%60%EF%BC%8CRHEL8%E7%9A%84%E4%B8%BA%60Dockerfile.rhel8%60%EF%BC%8CFedora%E7%9A%84Dockerfile%E5%90%8D%E4%B8%BA%60Dockerfile.fedora%60%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务