这篇文章介绍了如何使用 Cloud Native Buildpack(CNB)构建 Ruby on Rails 应用的 OCI 镜像,无需编写或维护 Dockerfile,具体内容如下:
- 安装 pack CLI:假设已安装 docker 和 git,通过 Homebrew 安装 pack CLI,确保安装正确并设置默认构建器为 heroku/builder:22,若在不同架构机器上需设置 Docker 默认平台为 linux/amd64。
- 什么是构建器(builder):构建器是 buildpacks 的交付机制,包含基础镜像和单个 buildpack 的引用,基础镜像包含操作系统和系统依赖,buildpacks 用于配置运行应用的镜像。可以通过
pack builder inspect
查看构建器内容。 - 下载示例 Ruby on Rails 应用:下载一个预构建的 Ruby on Rails 应用,通过
git clone
获取并进入应用目录,本教程基于 amd64 架构。 - 使用 pack CLI 构建应用镜像:执行
pack build my-image-name --path.
命令,使用 heroku 构建器针对应用构建镜像,过程中会进行分析、检测、恢复、构建等步骤,包括安装各种依赖、编译资产等,最终成功构建镜像并可在本地查看。 pack build
的作用:运行pack build
时,每个 buildpack 会运行检测脚本确定是否构建应用,检测阶段后 buildpack 执行,可查看输出中的参与 buildpack,CNB 的 buildpack API 提供了对层的精细控制,所有 CNB 生成的镜像可重基,且改进了 Dockerfile 的一些问题。- 使用镜像:可以使用
docker run
命令运行构建的镜像,默认会启动 web 服务器配置,也可通过环境变量等进行配置,还可以访问容器终端进行交互,了解内部结构,如layers
文件夹和 entrypoint 等。 - 尝试在应用中使用 CNBs:鼓励尝试使用
pack
和 Heroku 构建器构建应用并分享经验,还介绍了配置多种语言的方法,通过project.toml
文件指定多个 buildpack,以及使用Procfile
配置 web 进程。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。