NPM Install CNB 是一个基于 Cloud Native Buildpacks (CNB) 规范的构建组件(Buildpack),旨在通过集成 Node Engine CNB 提供的 npm 工具链,自动化管理 Node.js 应用的依赖项安装流程。其核心功能是在应用构建阶段解析并安装 package.json 中声明的依赖,确保构建环境中依赖项的正确配置,为后续应用打包和运行提供基础。
package.json 或 package-lock.json/yarn.lock(若存在),自动执行 npm install 或 npm ci 命令安装依赖。node_modules),减少重复构建时的网络请求和安装时间。package.json 的各类 Node.js 应用(如 Express、React、Vue 等)。package.json 的 Node.js 应用(支持 npm 作为包管理器)。pack CLI、Tekton、GitHub Actions 中的 CNB 插件等)。NPM Install CNB 作为 CNB 构建包,需配合 CNB 构建器(Builder)使用,典型流程如下:
package.json(必要),可选包含 package-lock.json 或 npm-shrinkwrap.json 以锁定依赖版本。paketobuildpacks/builder:base)。pack CLI 或 CNB 兼容工具触发构建,NPM Install CNB 会自动执行依赖安装。pack CLI)使用 pack 命令行工具构建 Node.js 应用镜像:
bash# 安装 pack CLI(参考 [***] # 构建应用镜像,指定包含 NPM Install CNB 的 builder pack build my-node-app \ --builder paketobuildpacks/builder:base \ # 基础 builder,包含 Node Engine 和 NPM Install CNB --path ./my-node-project \ # 项目根目录(包含 package.json) --env NODE_ENV=production # 可选:设置环境变量
构建过程中,NPM Install CNB 会自动执行:
package.json;npm install(或 npm ci,若存在 lock 文件);node_modules)缓存至构建层,供后续构建复用。NPM Install CNB 支持通过环境变量或项目配置文件(buildpack.yml/project.toml)自定义行为,常用配置如下:
| 环境变量名 | 描述 | 默认值 |
|---|---|---|
NPM_REGISTRY | 指定 npm 依赖仓库地址(如私有仓库) | [***] |
NPM_CONFIG_PRODUCTION | 是否仅安装 dependencies(忽略 devDependencies) | 由 NODE_ENV 决定,production 时为 true |
NPM_INSTALL_FLAGS | 传递给 npm install 的额外参数(如 --force、--no-audit) | 空 |
NODE_ENV | 影响 npm 行为(如 production 模式下不安装 devDependencies) | development |
NPM_CONFIG_CACHE | 自定义 npm 缓存目录(用于依赖缓存优化) | /layers/npm-cache |
示例:使用私有 npm 仓库构建
bashpack build my-node-app \ --builder paketobuildpacks/builder:base \ --path ./my-node-project \ --env NPM_REGISTRY=[***] \ --env NPM_INSTALL_FLAGS="--no-audit --legacy-peer-deps"
通过项目根目录的 buildpack.yml 或 project.toml 配置(优先级高于环境变量):
buildpack.yml 示例:
yamlnodejs: npm: registry: "[***]" install_flags: "--no-audit --legacy-peer-deps" config: production: true # 等效于 NPM_CONFIG_PRODUCTION=true
project.toml 示例(符合 CNB 项目元数据规范):
toml[[build.env]] name = "NPM_REGISTRY" value = "[***]" [[build.env]] name = "NPM_INSTALL_FLAGS" value = "--force"
NPM Install CNB 会将 node_modules 缓存至 CNB 构建层(/layers/npm-install/node_modules),后续构建时若 package.json 和 lock 文件未变更,将直接复用缓存以加速构建。若需强制刷新依赖(忽略缓存),可通过以下方式:
bashpack build my-node-app \ --builder paketobuildpacks/builder:base \ --path ./my-node-project \ --env BP_CLEAR_CACHE=true # 清理所有构建缓存(含依赖缓存)
package-lock.json 或 npm-shrinkwrap.json,此时 NPM Install CNB 会优先使用 npm ci 而非 npm install,减少依赖版本波动。engines 字段在 package.json 中声明 Node.js 版本范围(如 "engines": {"node": ">=18.0.0"})。node_modules 权限,可通过 BP_NODE_USER 环境变量指定运行用户(如 --env BP_NODE_USER=root)。来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429