规划构建
在开始使用 IBM Cloud® Code Engine构建映像之前,请了解有关构建的不同选项。
构建或映像构建是一种可用于从源代码创建容器映像的机制。Code Engine 支持从 Dockerfile 和 Cloud Native Buildpack 进行构建。
如果您具有存在于容器注册表中的映像构建,并且该映像是使用非基于 Intel 的处理器构建的,那么 Code Engine 无法运行容器映像。Code Engine 使用基于 Intel 的处理。 如果您使用 Intel 处理 (x86 处理器),那么可以构建自己的映像。 您还可以选择让 Code Engine 为您处理构建过程。
Code Engine 提供定制资源定义 (CRD) 方法。 有关更多信息,请参阅 Source-to-image 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
使用 BuildKit 工具的 Dockerfile 构建。 要使用此策略,请将 Dockerfile 添加到源存储库。 此 Dockerfile 描述从源存储库构建容器映像所需的步骤。 例如,Dockerfile 可能包含将静态文件从源复制到要由 Web Service 托管的容器的步骤。 它可以编译以您选择的语言编写的源代码,并将生成的二进制文件添加到容器映像。 有关 Dockerfile 构建的更多信息,请参阅 为 Code Engine。
从 Docker Hub 拉取映像以用于 Code Engine中的应用程序或作业时,请注意免费套餐 (匿名) 用户的 Docker 速率限制。 如果您收到 429
错误,指示您已达到拉取速率限制,那么可能会迂到拉取限制。 要 提高速率限制,您可以将帐户升级到 Docker Pro
或 Team
预订。
云本机 buildpack
云本机 buildpack,使用 Paketo 来检查源存储库,并检测代码所基于的运行时环境以及如何从源构建容器映像。 Buildpack 会对源存储库的目录结构进行假定。 有关如何正确构造源存储库的更多信息,请参阅为运行时提供的样本。
运行时 | 版本 | 样本 |
---|---|---|
执行 | 1.23.8 | Go 样本。 |
Java | 21.0.7 | Java 样本。 |
Node.js | 20.19.1 | Node.js 样本。 |
PHP | 8.1.28 | PHP 样本。 |
Python | 3.10.17 | Python 样本。 |
Ruby | 3.1.6 | Ruby 样本。 |
.NET Core | 9.0.203 (.NET Core SDK)、(.NET Core Runtime) 9.0.4 |
。NET Core 样本。 |
使用 Cloud Native Buildpack 构建的映像不再使用 Jan, 1st 1980
的中立时间戳记作为其映像创建时间戳记。 输入源的时间戳记用作映像创建时间戳记; 例如,用于构建的落实的 Git 落实时间戳记。
每当将 buildpack 的更新版本推广到各个 IBM Cloud 区域时,Paketo buildpack 的特定运行时版本可能会在短时间内因区域而异。
确定构建的大小
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 存储库。