如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
此容器镜像包含Node.JS 10,作为Node.JS 10应用程序的https://github.com/openshift/source-to-image%E5%9F%BA%E7%A1%80%E9%95%9C%E5%83%8F%E3%80%82%E7%94%A8%E6%88%B7%E5%8F%AF%E9%80%89%E6%8B%A9%E5%9F%BA%E4%BA%8ERHEL%E3%80%81CentOS%E5%92%8CFedora%E7%9A%84%E9%95%9C%E5%83%8F%E3%80%82RHEL%E9%95%9C%E5%83%8F%E5%8F%AF%E5%9C%A8Red Hat Container Catalog获取,CentOS镜像可在Quay.io获取,Fedora镜像可在Fedora Registry获取。生成的镜像可使用https://github.com/containers/libpod%E8%BF%90%E8%A1%8C%E3%80%82
注意:虽然本README中的示例使用podman,但您可以将任何此类调用替换为docker,参数保持不变。
Node.js 10容器镜像是构建和运行各种Node.js 10应用程序和框架的基础平台。Node.js是基于Chrome JavaScript运行时构建的平台,便于构建快速、可扩展的网络应用程序。Node.js采用事件驱动、非阻塞I/O模型,使其轻量且高效,非常适合在分布式设备上运行的数据密集型实时应用程序。
本示例假设您使用ubi8/nodejs-10镜像,该镜像可通过OpenShift中的nodejs:10镜像流标签获取。
要在OpenShift中构建简单的https://github.com/sclorg/nodejs-ex.git%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%9A
oc new-app nodejs:10~https://github.com/sclorg/nodejs-ex.git
访问应用程序:
$ oc get pods $ oc exec <pod> -- curl 127.0.0.1:8080
此镜像支持OpenShift中的源到镜像(S2I)策略。S2I是一个OpenShift框架,便于编写将应用源代码作为输入、使用构建器镜像(如本Node.js容器镜像)并生成运行组装后应用的新镜像的镜像。
为支持S2I框架,构建器镜像中包含以下重要脚本:
镜像内的/usr/libexec/s2i/assemble脚本用于生成包含应用artifacts的新镜像。该脚本获取给定应用的源代码并将其放置到镜像内的适当目录中。它利用Node.js应用开发中的一些常见模式(见下文“环境变量”部分)。
/usr/libexec/s2i/run脚本作为生成的容器镜像(包含应用artifacts的新镜像)的默认命令。它在生产环境中运行npm run,如果DEV_MODE设置为true(见下文“环境变量”部分),则使用nodemon。
与S2I策略相比,使用Dockerfile是构建包含应用程序的Node.js容器镜像的更灵活方式。当S2I不够灵活或在OpenShift环境外构建镜像时,使用Dockerfile。
要在Dockerfile中使用Node.js镜像,请按照以下步骤操作:
podman pull ubi8/nodejs-10
本示例使用UBI镜像ubi8/nodejs-10。此镜像可根据UBI最终用户许可协议(EULA)免费使用和再分发。有关UBI的更多信息,请参见UBI常见问题。
此处使用可从https://github.com/sclorg/nodejs-ex.git%E8%8E%B7%E5%8F%96%E7%9A%84%E7%A4%BA%E4%BE%8B%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E3%80%82%E6%82%A8%E5%8F%AF%E4%BB%A5%E5%85%8B%E9%9A%86%E8%AF%A5%E4%BB%93%E5%BA%93%E8%BF%9B%E8%A1%8C%E8%BF%9B%E4%B8%80%E6%AD%A5%E5%AE%9E%E9%AA%8C%E3%80%82
git clone https://github.com/sclorg/nodejs-ex.git app-src
此步骤通常至少包括以下部分:
对于这三个部分,用户可以在Dockerfile中手动设置并显式使用nodejs和npm命令(3.1.),或者使用镜像内的S2I脚本(3.2.;有关这些脚本的更多信息,请参见上文“源到镜像(S2I)框架和脚本”部分),这些脚本已知道如何设置和运行一些常见的Node.js应用程序。
3.1. 使用自定义设置创建包含以下内容的Dockerfile:
FROM ubi8/nodejs-10 # 添加应用源代码 ADD app-src . # 安装依赖项 RUN npm install # 运行脚本使用标准方式运行应用程序 CMD npm run -d start
3.2. 使用S2I脚本并通过Dockerfile构建镜像,创建包含以下内容的Dockerfile:
FROM ubi8/nodejs-10 # 将应用源代码添加到assemble脚本期望的目录,并设置权限以使容器非root用户运行 USER 0 ADD app-src /tmp/src RUN chown -R 1001:0 /tmp/src USER 1001 # 安装依赖项 RUN /usr/libexec/s2i/assemble # 为生成的镜像设置默认命令 CMD /usr/libexec/s2i/run
podman build -t node-app .
podman run -d node-app
应用开发人员可使用以下环境变量在OpenShift中配置此镜像的运行时行为:
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时相关。
作为开发模式的一部分,此镜像支持热部署。如果启用开发模式,运行中容器内更改的任何源代码将立即反映在运行的nodejs应用程序中。
要在运行中的容器中更改源代码,使用Podman的https://github.com/containers/libpod%E5%91%BD%E4%BB%A4%EF%BC%9A
$ podman exec -it <容器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%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%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属性。
以下是带有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和其他源代码可在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%84Node.js%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%BADockerfile.fedora%E3%80%82===SHORT_DESC=== 用于构建和运行Node.js 10应用程序的平台
===FULL_DESC===
此容器镜像包含Node.JS 10,作为Node.JS 10应用程序的https://github.com/openshift/source-to-image%E5%9F%BA%E7%A1%80%E9%95%9C%E5%83%8F%E3%80%82%E7%94%A8%E6%88%B7%E5%8F%AF%E9%80%89%E6%8B%A9%E5%9F%BA%E4%BA%8ERHEL%E3%80%81CentOS%E5%92%8CFedora%E7%9A%84%E9%95%9C%E5%83%8F%E3%80%82RHEL%E9%95%9C%E5%83%8F%E5%8F%AF%E5%9C%A8Red Hat Container Catalog获取,CentOS镜像可在Quay.io获取,Fedora镜像可在Fedora Registry获取。生成的镜像可使用https://github.com/containers/libpod%E8%BF%90%E8%A1%8C%E3%80%82
注意:虽然本README中的示例使用podman,但您可以将任何此类调用替换为docker,参数保持不变。
Node.js 10容器镜像是构建和运行各种Node.js 10应用程序和框架的基础平台。Node.js是基于Chrome的JavaScript运行时构建的平台,便于构建快速、可扩展的网络应用程序。Node.js采用事件驱动、非阻塞I/O模型,使其轻量且高效,非常适合在分布式设备上运行的数据密集型实时应用程序。
本示例假设您使用ubi8/nodejs-10镜像,该镜像可通过OpenShift中的nodejs:10镜像流标签获取。
要在OpenShift中构建简单的https://github.com/sclorg/nodejs-ex.git%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%9A
oc new-app nodejs:10~https://github.com/sclorg/nodejs-ex.git
访问应用程序:
$ oc get pods $ oc exec <pod> -- curl 127.0.0.1:8080
此镜像支持OpenShift中的源到镜像(S2I)策略。S2I是一个OpenShift框架,便于编写将应用源代码作为输入、使用构建器镜像(如本Node.js容器镜像)并生成运行组装后应用的新镜像的镜像。
为支持S2I框架,构建器镜像中包含以下重要脚本:
镜像内的/usr/libexec/s2i/assemble脚本用于生成包含应用artifacts的新镜像。该脚本获取给定应用的源代码并将其放置到镜像内的适当目录中。它利用Node.js应用开发中的一些常见模式(见下文“环境变量”部分)。
/usr/libexec/s2i/run脚本作为生成的容器镜像(包含应用artifacts的新镜像)的默认命令。它在生产环境中运行npm run,如果DEV_MODE设置为true(见下文“环境变量”部分),则使用nodemon。
与S2I策略相比,使用Dockerfile是构建包含应用程序的Node.js容器镜像的更灵活方式。当S2I不够灵活或在OpenShift环境外构建镜像时,使用Dockerfile。
要在Dockerfile中使用Node.js镜像,请按照以下步骤操作:
podman pull ubi8/nodejs-10
本示例使用UBI镜像ubi8/nodejs-10。此镜像可根据UBI最终用户许可协议(EULA)免费使用和再分发。有关UBI的更多信息,请参见UBI常见问题。
此处使用可从https://github.com/sclorg/nodejs-ex.git%E8%8E%B7%E5%8F%96%E7%9A%84%E7%A4%BA%E4%BE%8B%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E3%80%82%E6%82%A8%E5%8F%AF%E4%BB%A5%E5%85%8B%E9%9A%86%E8%AF%A5%E4%BB%93%E5%BA%93%E8%BF%9B%E8%A1%8C%E8%BF%9B%E4%B8%80%E6%AD%A5%E5%AE%9E%E9%AA%8C%E3%80%82
git clone https://github.com/sclorg/nodejs-ex.git app-src
此步骤通常至少包括以下部分:
对于这三个部分,用户可以在Dockerfile中手动设置并显式使用nodejs和npm命令(3.1.),或者使用镜像内的S2I脚本(3.2.;有关这些脚本的更多信息,请参见上文“源到镜像(S2I)框架和脚本”部分),这些脚本已知道如何设置和运行一些常见的Node.js应用程序。
3.1. 使用自定义设置创建包含以下内容的Dockerfile:
FROM ubi8/nodejs-10 # 添加应用源代码 ADD app-src . # 安装依赖项 RUN npm install # 运行脚本使用标准方式运行应用程序 CMD npm run -d start
3.2. 使用S2I脚本并通过Dockerfile构建镜像,创建包含以下内容的Dockerfile:
FROM ubi8/nodejs-10 # 将应用源代码添加到assemble脚本期望的目录,并设置权限以使容器非root用户运行 USER 0 ADD app-src /tmp/src RUN chown -R 1001:0 /tmp/src USER 1001 # 安装依赖项 RUN /usr/libexec/s2i/assemble # 为生成的镜像设置默认命令 CMD /usr/libexec/s2i/run
podman build -t node-app .
podman run -d node-app
应用开发人员可使用以下环境变量在OpenShift中配置此镜像的运行时行为:
NODE_ENV
NodeJS运行模式(默认:"production")
DEV_MODE
当设置为"true"时,nodemon将用于在您工作时自动重新加载服务器(默认:"false")。将DEV_MODE设置为"true"会将NODE_ENV的默认值更改为"development"(如果未显式设置)。
NPM_RUN
选择在您的package.json文件的scripts部分
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务