heroku/builderHeroku Cloud Native Buildpack Builder(以下简称"Heroku CNB Builder")是基于 Cloud Native Buildpacks(CNB)规范的预配置构建环境镜像。该镜像集成了 Heroku 官方维护的 Buildpack 集合,旨在提供标准化、自动化的应用构建流程,帮助开发者将源代码快速构建为 OCI 兼容的容器镜像,无需手动编写 Dockerfile。其核心用途是简化容器化构建流程,降低多语言应用的容器化门槛,同时确保构建产物符合行业标准。
严格遵循 CNB v3 及以上规范,兼容 OCI 镜像标准,支持与 pack CLI、Tekton、GitHub Actions 等主流 CNB 工具链集成。
内置 Heroku 官方 Buildpacks,覆盖主流开发语言和框架,包括但不限于:
npm install、pip install、mvn package 等)--buildpack 参数添加自定义 Buildpacks(本地路径或 Git 仓库)pack 的缓存卷机制加速重复构建)兼容 Heroku 应用配置模型,可直接复用 Heroku 应用的环境变量、构建配置(如 Procfile、app.json)等,降低跨环境迁移成本。
开发者可直接基于源代码构建容器镜像,跳过 Dockerfile 编写步骤,加速本地开发-测试循环。
作为标准化构建环节嵌入 CI/CD 流程(如 GitHub Actions、GitLab CI、Jenkins),实现"代码提交→自动构建→镜像推送"的全自动化。
统一多语言项目的容器化流程,避免为不同语言维护差异化的 Dockerfile。
为团队提供一致的构建环境,减少"本地可运行、构建后不可运行"的环境差异问题。
适用于希望减少 Dockerfile 维护工作量(如基础镜像更新、安全补丁管理)的团队或项目。
使用 Heroku CNB Builder 需安装以下工具:
在源代码根目录执行以下命令,使用 Heroku CNB Builder 构建镜像:
bashpack build <镜像名称> --builder heroku/buildpacks:20
参数说明:
<镜像名称>:自定义镜像标签(如 my-node-app:latest)--builder heroku/buildpacks:20:指定使用 Heroku CNB Builder(20 为 Stack 版本,对应 Heroku-20 运行时,其他版本如 22 对应 Heroku-22)示例(构建 Node.js 应用):
bash# 克隆示例 Node.js 应用 git clone [***] && cd node-js-getting-started # 构建镜像 pack build my-node-app --builder heroku/buildpacks:20
构建完成后,使用 Docker 运行镜像:
bashdocker run -p 3000:3000 my-node-app
访问 http://localhost:3000 即可查看应用。
通过 --env 参数注入构建时环境变量(影响依赖安装、构建逻辑):
bashpack build my-app --builder heroku/buildpacks:20 \ --env NODE_ENV=production \ # Node.js 环境(生产/开发) --env MAVEN_OPTS="-Xmx512m" # Java Maven 构建参数
通过 --buildpack 参数追加自定义 Buildpacks(优先级高于默认 Buildpacks):
bash# 使用本地自定义 Buildpack + Heroku 官方 Buildpacks pack build my-app --builder heroku/buildpacks:20 \ --buildpack ./my-custom-buildpack \ # 本地 Buildpack 路径 --buildpack [***] # Git 仓库 Buildpack
通过 --cache-volume 复用构建缓存,加速重复构建(需提前创建 Docker 卷):
bash# 创建缓存卷 docker volume create my-app-cache # 使用缓存构建 pack build my-app --builder heroku/buildpacks:20 \ --cache-volume my-app-cache
在 docker-compose.yml 中配置基于 Heroku CNB Builder 的构建流程:
yamlversion: '3.8' services: app: # 基于 Heroku CNB Builder 构建 build: context: . # 源代码根目录 builder: heroku/buildpacks:20 # 指定 builder 镜像 args: # 构建时参数(传递给 pack build) BUILD_ENV: production ports: - "3000:3000" # 端口映射 environment: # 运行时环境变量(容器启动时生效) PORT: 3000
构建并启动服务:
bashdocker-compose up --build
| 参数/环境变量 | 说明 | 示例值 |
|---|---|---|
--builder | 指定 Heroku CNB Builder 镜像(必填) | heroku/buildpacks:20 |
--buildpack | 添加自定义 Buildpack(可多次指定,优先级从高到低) | ./custom-buildpack |
--env <KEY>=<VALUE> | 设置构建时环境变量(影响 Buildpack 行为) | NODE_ENV=production |
--path | 指定源代码路径(默认当前目录) | ../my-app-src |
--cache-volume | 绑定缓存卷(加速重复构建) | my-app-cache |
--publish | 构建完成后推送到镜像仓库(需配置 Docker 登录信息) | --publish my-registry.com/app |
HEROKU_APP_NAME | 构建时指定 Heroku 应用名称(用于关联 Heroku 配置,可选) | my-heroku-app |
20 对应 Ubuntu 20.04,22 对应 Ubuntu 22.04),需根据应用兼容性选择。pack build --no-cache 禁用缓存强制全量构建。


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