规划建设
在开始使用 IBM Cloud® Code Engine 构建图像之前,请先了解构建图像的不同选项。
Code Engine 支持从 Dockerfile 构建,Cloud Native Buildpacks 支持从 Dockerfile 构建。
如果您构建的映像存在于容器注册表中,而该映像是使用非英特尔处理器构建的,则 Code Engine 无法运行您的容器映像。Code Engine 使用英特尔处理器。 如果使用英特尔处理技术( x86 处理器),您可以构建自己的图像。 您也可以选择让 Code Engine 为您处理构建过程。
Code Engine 提供了自定义资源定义 (CRD) 方法。 更多信息,请参阅 源到图像 CRD 方法。
准备信号源位置
要让 Code Engine 访问您的源代码,您需要在 Git 代码库或本地工作站上的可访问位置提供源代码。
- Git 存储库
- 将代码存储在 Git 代码库中,例如在 GitHub 或 GitLab. 你的代码可以放在版本库的顶层,也可以放在子目录中。 如果源代码库不是公开的,则必须添加 访问 Code Engine。
- 本地工作站
- 将代码存储在本地工作站上。 当你提交从本地目录提取代码的构建时,你的源代码会被打包成一个归档文件,并上传到你的 IBM Cloud Container Registry 实例。 源镜像会在与构建镜像相同的命名空间中创建。 请注意,您的本地构建目标只能是 IBM Cloud Container Registry。 通过使用
.ceignore文件,您可以选择忽略源代码中的某些文件模式,该文件的行为与.gitignore文件类似。 例如,用于 node.js 应用程序的.ceignore文件的条目可能包括node_modules和.npm。 如需了解更多可忽略的文件模式示例,请参阅 GitHub.gitignore 代码库。
选择构建策略
Code Engine 可以使用以下策略之一来构建容器映像。
Dockerfile
工具的 Dockerfile 构建。BuildKit 工具。 要使用这种策略,请在源代码库中添加一个 Dockerfile。 此 Dockerfile 描述了从源资源库构建容器映像所需的步骤。 例如,Dockerfile 可能包含将静态文件从源代码复制到容器中的步骤,以便由网络服务托管。 它可能会编译以您选择的语言编写的源代码,并将生成的二进制文件添加到您的容器映像中。 有关 Dockerfile 构建的更多信息,请参阅 为 Code Engine 编写 Dockerfile。
当您从 Docker Hub 提取图像与 Code Engine 中的应用程序或作业一起使用时,请注意 Docker 费率限制 适用于免费计划(未验证)用户。 如果收到 429 错误,表明您已达到拉速限制,则可能会遇到拉速限制。 要 提高费率限额,您可以将账户升级为 Docker Pro 或 Team 订阅。
Cloud Native Buildpacks
云原生构建包使用 Paketo 检查源代码库,并检测代码基于哪个运行时环境,以及如何从源代码构建容器镜像。 编译包会对源代码库的目录结构做出假设。 有关如何正确构建源代码库的更多信息,请参阅运行时提供的示例。
| 运行时 | 版本 | 样本 |
|---|---|---|
| 执行 | 1.24.12 | 去样品。 |
| Java | 21.0.10 | Java 样品。 |
| Node.js | 24.14.0 | Node.js 样品。 |
| PHP | 8.1.28 | PHP 样本。 |
| Python | 3.11.14 | Python 样品。 |
| Ruby | 3.1.7 | Ruby 样品。 |
| .NET Core | 9.0.311 (.NET Core SDK), 9.0.13 (.NET Core Runtime) |
.NET Core 样品。 |
使用 Cloud Native Buildpacks 创建的图像不再使用 Jan, 1st 1980 的中性时间戳作为图像创建时间戳。 输入源的时间戳被用作镜像创建时间戳;例如,用于构建的 Git 提交时间戳。
每当向 IBM Cloud 不同地区推出更新版本的构建包时,不同地区的 Paketo 构建包的特定运行时版本可能会有短暂差异。
确定建设规模
Code Engine 将构建分类为 small, medium, large, xlarge,和 xxlarge 大小。 构建大小定义了如何为构建分配 CPU 内核、内存和磁盘空间。 较小的构建成本较低,但速度通常也较慢,因为它使用的 CPU 内核较少。 此外,构建时对内存和磁盘的要求可能会导致构建失败,因为构建的大小较小。
| 大小 | Dockerfile | buildpack |
|---|---|---|
small |
|
|
medium |
|
|
large |
|
|
xlarge |
|
|
xxlarge |
|
|
如果您不确定选择哪种尺寸,可以考虑从 small 或 medium 开始。 如果由于内存或磁盘空间不足或速度不够快而导致构建失败,那么就切换到更大的尺寸。
选择容器映像注册表
Code Engine 从 Git 代码库或本地目录中提取源代码,构建源代码,然后将映像推送(上传)到容器映像注册中心。
您可以使用 资源库 和 容器映像的注册表,它们可以是公共的,也可以是私人的。 您也可以选择为构建输出指定注册表详细信息和注册表密文,或者选择 Code Engine,让它为您从源代码中构建镜像,并将镜像存储在 IBM Cloud Container Registry 中,以便 自动访问。
选择构建方法
在以下构建选项中,Code Engine 从 Git 代码库或本地目录中提取源代码,构建容器映像,然后将容器映像推送(上传)到注册表。 您可以选择公共或私人 存储库 和 注册表。 如果注册表是私有的,请使用注册表秘密指定注册表详细信息,以便使用用户提供的访问权限进行构建输出。 或者,您也可以选择 Code Engine 为您创建访问权限,将图像存储在 IBM Cloud Container Registry 中,并自动进行访问。
创建构建配置
在这种情况下,Code Engine,为您的构建创建一个配置。
创建构建配置并不创建映像,而是创建构建映像的配置。 您可以通过运行构建程序,根据配置创建映像。 在运行联编之前,联编配置不会被验证或用于创建映像。 通过构建配置,可以对镜像进行多次后续构建,例如在源代码库中应用更改时。
有关更多信息,请参阅以下主题。
创建构建配置后,就可以 运行它 了。
使用独立构建命令创建容器映像
要了解如何使用单个 Code Engine CLI 命令构建容器映像,并在不创建可重用构建配置的情况下创建容器映像,请参阅 使用独立构建命令(CLI)构建容器映像。
构建代码并创建工作量
从本地源代码创建工作负载时,源代码会打包成归档文件,并上传到 IBM Cloud Container Registry 实例中的受管命名空间。 图像也存储在同一个命名空间中。
要通过一次操作构建代码并创建工作负载,请参阅以下主题。
今后的建设步骤
想了解更多代码示例? 查看 样本 IBM Cloud Code Engine GitHub repo。