使用 buildpack 构建应用程序
构建或映像构建是一种可用于从源代码创建容器映像的机制。Code Engine 支持从 Dockerfile 和 Cloud Native Buildpack 进行构建。
准备工作
所有 Code Engine 用户都需要具有现收现付帐户。 教程可能会产生成本。 使用“成本估算器”可根据您的预计使用量生成成本估算。 有关更多信息,请参阅 Code Engine 定价。
设置注册表访问权
由于构建的输出是存储在容器注册表中的映像,因此您必须 设置对 Code Engine的映像注册表的访问权。 要在 Docker Hub 中存储映像,请使用 ibmcloud ce secret create --format registry
命令创建注册表访问权。 在以下示例中,使用 dockerhub
作为注册表访问权的名称,并将 Docker 中心标识指定为用户名。 对于 Docker Hub 密码,可以指定 Docker Hub 密码或 访问令牌。
ibmcloud ce secret create --format registry --name dockerhub --server https://index.docker.io/v1/ --username username --password password
示例输出
Creating registry secret 'dockerhub'...
OK
有关更多信息,请参阅 添加注册表访问文档。
创建构建
创建包含有关应用程序或作业的源代码的信息的构建。 信息可以包括作业或应用程序的位置和访问信息。
ibmcloud ce build create
命令不会创建映像,但会创建用于构建映像的配置。 ibmcloud ce buildrun submit
命令引用构建配置以创建映像。 在执行 buildrun submit
命令之前,不会验证或使用您在 build create
命令或 build update
命令上指定的选项来创建映像。 构建配置支持映像的多个后续构建,例如,将更改应用于源存储库时。
在以下示例中,要创建构建配置,请使用 ibmcloud ce build create
命令。 使用 tutorial-build
作为构建的名称,并将 https://github.com/IBM/CodeEngine
指定为源代码的位置,将
/s2i-buildpacks
指定为包含源的上下文目录文件夹。 使用先前为注册表访问而创建的 dockerhub
注册表私钥。 指定 buildpacks
作为用于编译源代码的构建策略,并指定 small
作为构建大小。
ibmcloud ce build create --name tutorial-build --source https://github.com/IBM/CodeEngine --commit main --context-dir /s2i-buildpacks --registry-secret dockerhub --image docker.io/<your_docker_ID>/tutorial --size small --strategy buildpacks
示例输出
Creating build 'tutorial-build'...
OK
size
选项指定构建的大小,这将确定所使用的资源量。 有效值为 small
,medium
,large
,xlarge
和 xxlarge
。 size
反映了应用程序或作业的源代码的构建需求。 如果由于缺少内存或磁盘空间而导致构建失败,或者速度不够快,请尝试切换到更大的大小。 更大的构建大小还意味着将更多内存和
CPU 核心分配给构建过程。 增大此大小可能会加快构建过程,但此操作也会增加成本。 有关构建的更多信息,请查看 故障诊断技巧。
提交构建运行
现在已创建构建配置,您可以使用 ibmcloud ce buildrun submit
命令基于该构建配置运行构建。 在以下示例中,引用 tutorial-build
构建配置并提交构建运行。 系统将生成唯一的构建运行名称。 您可以选择使用 --name
选项为构建运行提供名称,这可能很有用,因为获取构建运行详细信息需要构建运行的名称。 在此示例中,系统会自动生成构建运行名称。
ibmcloud ce buildrun submit --build tutorial-build
示例输出
Submitting build run 'tutorial-build-run-851026-090000000'...
Run 'ibmcloud ce buildrun get -n tutorial-build-run-851026-090000000' to check the build run status.
OK
要检查构建运行的状态,请使用 buildrun get
ibmcloud ce buildrun get
命令来显示构建运行的详细信息。
ibmcloud ce buildrun get --name tutorial-build-run-851026-090000000
示例输出
Getting build run 'tutorial-build-run-851026-090000000'...
[...]
OK
Name: tutorial-build-run-851026-090000000
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 3m42s
Created: 2021-03-14T14:31:21-05:00
Summary: Succeeded
Status: Succeeded
Reason: Succeeded
当状态为 Succeeded
时,构建完成。
如果构建运行存在问题,请使用 ibmcloud ce buildrun logs
命令来显示有关构建运行的日志。
ibmcloud ce buildrun logs --buildrun tutorial-build-run-851026-090000000
示例输出
Getting build run 'tutorial-build-run-851026-090000000'...
Getting instances of build run 'tutorial-build-run-851026-090000000'...
Getting logs for build run 'tutorial-build-run-851026-090000000'...
OK
tutorial-build-run-851026-090000000-7vlrw-pod-c9t6g/step-git-source-source-7tbwh:
{"level":"info","ts":1610378702.42616,"caller":"git/git.go:165","msg":"Successfully cloned https://github.com/IBM/CodeEngine @ 6b66f2bc3e1277c2e6475608a9c50335712116e0 (grafted, HEAD, origin/main) in path /workspace/source"}
{"level":"info","ts":1610378703.5453625,"caller":"git/git.go:203","msg":"Successfully initialized and updated submodules in path /workspace/source"}
[...]
通过使用 buildpack 构建策略从源代码成功构建容器映像!
使用容器映像
现在,已构建容器映像并将该映像推送到已配置的容器注册表位置,您可以在 Code Engine中部署该映像。 例如,您可以创建使用所创建映像的 Code Engine 应用程序。
ibmcloud ce application create --name tutorial-app --image <your_docker_ID>/tutorial
示例输出
Creating application 'tutorial-app'...
[...]
Buildpack 的后续步骤
有关更多信息,请参阅 部署应用程序。
源代码项目是否使用 Dockerfile? 请遵循相同的步骤,但指定 Dockerfile
构建策略以构建应用程序或作业的映像。 有关 Dockerfile 的更多信息,请参阅 为 Code Engine。
要查找更多代码示例吗? 请查看 IBM Cloud Code Engine GitHub 存储库的样本。