使用 CLI 从本地源代码部署应用程序
您可以使用 IBM Cloud® Code Engine CLI 直接从本地工作站上的源代码部署应用程序。 使用 app create
命令可从本地源构建映像,并部署应用程序以引用此已构建映像。
提交从本地目录提取代码的构建时,源代码将打包到归档文件中。Code Engine 自动将映像上载到帐户中的 IBM Cloud® Container Registry 名称空间,然后创建并部署应用程序以引用此构建的映像。 请注意,只能将 IBM Cloud Container Registry 作为本地构建的目标。 将在与构建映像相同的名称空间中创建源映像。 对于此场景,您只需要提供应用程序的名称以及本地源的路径。 有关选项的完整列表,请参阅 ibmcloud ce app create
命令。
有关访问映像注册表所需的许可权的信息,请参阅 设置映像注册表的权限。
您可以选择通过使用 .ceignore
文件来忽略源代码中的某些文件模式,该文件的行为类似于 .gitignore
文件。 例如,node.js 应用程序的 .ceignore
文件的条目可能包括 node_modules
和 .npm
。 有关要忽略的更多样本文件模式,请参阅 GitHub.gitignore 存储库。
此场景需要 IBM Cloud® Container Registry。
准备工作
- 设置 Code Engine CLI 环境。
- 创建和使用项目。
在使用本地源之前,请确保源位于本地工作站上的可访问位置。
此示例使用 https://github.com/IBM/CodeEngine
样本; 尤其是 helloworld
样本。
-
使用以下命令将
https://github.com/IBM/CodeEngine
样本源下载到本地工作站。git clone https://github.com/IBM/CodeEngine
-
更改为
CodeEngine\helloworld
目录。 -
从
CodeEngine\helloworld
目录中,创建并部署myapp-local
应用程序,该应用程序使用从本地工作站上的CodeEngine\helloworld
源构建的映像。 此命令会自动构建映像并将其推送到帐户中的 Container Registry 名称空间。 如果您没有现有的 Container Registry 名称空间,那么 Code Engine 会自动为您创建一个名称空间。ibmcloud ce application create --name myapp-local --build-source .
.
指示构建源位于当前工作目录中。示例输出
Creating application 'myapp-local'... Packaging files to upload from source path '.'... Submitting build run 'myapp-local-run-220414-171750199'... Creating image 'private.us.icr.io/ce--abcde-glxo4kabcde/app-myapp-local:220414-2117-rdaga'... Waiting for build run to complete... Build run status: 'Running' Build run completed successfully. Run 'ibmcloud ce buildrun get -n myapp-local-run-220414-171750199' to check the build run status. Waiting for application 'myapp-local' to become ready. Configuration 'myapp-local' is waiting for a Revision to become ready. Ingress has not yet been reconciled. Waiting for load balancer to be ready. Run 'ibmcloud ce application get -n myapp-local' to check the application status. OK https://myapp-local.glxo4kabcde.us-south.codeengine.appdomain.cloud
请注意,
application create
命令的输出提供了有关在创建和部署应用程序之前构建运行的进度的信息。在此示例中,已构建的映像将上载到 Container Registry中的
ce--abcde-glxo4kabcde
名称空间。下表概述了此示例中与
app create
命令配合使用的选项。 有关该命令及其选项的更多信息,请参阅ibmcloud ce app create
命令。命令描述 选项 描述 --name
应用程序的名称。 请使用项目中唯一的名称。 此值是必需的。
-名称必须以小写字母开头。
-名称必须以小写字母数字字符结尾。
-名称必须不超过 63 个字符,并且可以包含字母,数字和连字符 (-)。--build-source
本地源的路径。 -
使用
application get
命令可显示有关应用程序的信息,包括有关构建的信息。ibmcloud ce application get --name myapp-local
示例输出
[...] Name: myapp-local ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 2d15h Created: 2022-04-14T16:10:11-04:00 URL: https://myapp-local.Sta.us-south.codeengine.appdomain.cloud Cluster Local URL: http://myapp-local.glxo4kabcde.svc.cluster.local Console URL: https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp-local/configuration Status Summary: Application deployed successfully Environment Variables: Type Name Value Literal CE_API_BASE_URL https://api.us-south.codeengine.cloud.ibm.com Literal CE_APP myapp Literal CE_DOMAIN us-south.codeengine.appdomain.cloud Literal CE_PROJECT_ID abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Literal CE_REGION us-south Literal CE_SUBDOMAIN abcdabcdab Image: private.us.icr.io/ce--abcde-glxo4kabcde/app-myapp-local:220414-2010-sqsoj Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Registry Secrets: ce-auto-icr-private-us-south Revisions: myapp-local-00001: Age: 23m Latest: true Traffic: 100% Image: private.us.icr.io/ce--abcde-glxo4kabcde/app-myapp-local:220414-2010-sqsoj (pinned to 86944c) Running Instances: 0 Runtime: Concurrency: 100 Maximum Scale: 10 Minimum Scale: 0 Timeout: 300 Build Information: Build Run Name: myapp-local-run-220414-161009244 Build Type: git Build Strategy: dockerfile-medium Timeout: 600 Source: https://github.com/IBM/CodeEngine Context Directory: helloworld Dockerfile: Dockerfile Build Run Summary: Succeeded Build Run Status: Succeeded Build Run Reason: All Steps have completed executing Run 'ibmcloud ce buildrun get -n myapp-local-run-220414-161009244' for details. [...]
现在,您的应用程序是通过本地源代码创建和部署的,您可以使用 ibmcloud ce app update
命令来更新应用程序以满足您的需求。 有关更新应用程序的更多信息,请参阅 更新应用程序。
如果要更新源以用于应用程序,必须在 application update
命令上提供 --build-source
选项。
在 部署应用程序之前,您可以选择先从本地源进行构建,而不是使用单个命令从本地源构建映像并部署应用程序。 请参阅 创建用于从本地工作站拉取源的构建配置。
从本地源或从 CLI 的 存储库源代码 部署应用程序时,生成的构建运行不基于构建配置。 最终会自动删除完成的构建运行。 如果构建运行成功,那么将在 1 小时后删除不基于构建配置的构建运行。 如果构建运行不成功,那么将在 24 小时后删除此构建运行。 只能使用 CLI 显示有关此构建运行的信息。 您无法在控制台中查看此构建运行。
后续步骤
-
应用程序部署完成后,可通过 URL 访问应用程序。
-
您可以创建 定制域映射 并将其分配给应用程序。 有关使用定制域名跨多个区域部署应用程序的更多信息,请参阅 配置高可用性应用程序。
-
现在,您的应用程序已部署,请考虑使应用程序成为事件驱动的应用程序。 通过使用事件预订,您可以通过 定期调度 来触发应用程序,或者设置应用程序以对事件 (例如 文件上载 或 Kafka 消息) 作出反应。
部署应用程序后,您可以使用以下 任何 方法 更新已部署的应用程序 及其引用的代码,而与创建或先前更新应用程序的方式无关:
-
如果您具有容器映像,那么根据 Open Container Initiative(OCI)标准,您只需要提供对该映像的引用,这将指向部署应用程序时容器注册表的位置。 您可以使用 公共注册表 或 专用注册表 中的映像来部署应用程序。
如果使用
app create
命令创建了应用程序,并且指定了--build-source
选项以从本地或存储库源构建容器映像,并且要将应用程序更改为指向其他容器映像,那么必须首先从应用程序中除去构建的关联。 例如,运行ibmcloud ce application update -n APP_NAME --build-clear
。 从应用程序中除去构建的关联后,可以更新应用程序以引用其他映像。 -
如果您是从位于 Git 存储库中的源代码开始,那么可以选择让 Code Engine 负责从源构建映像并使用 单个 操作部署应用程序。 在此场景中,Code Engine 将映像上载到 IBM Cloud® Container Registry。 要了解更多信息,请参阅 从存储库源代码部署应用程序。 如果要对映像的构建进行更多控制,那么可以选择在部署应用程序之前使用 Code Engine 构建映像。
-
如果是从本地工作站上的源代码开始,那么可以选择让 Code Engine 负责从源构建映像并使用 单个 CLI 命令部署应用程序。 在此场景中,Code Engine 将映像上载到 IBM Cloud® Container Registry。 要了解更多信息,请参阅 使用 CLI 从本地源代码部署应用程序。 如果要对映像的构建进行更多控制,那么可以选择在部署应用程序之前使用 Code Engine 构建映像。
例如,您可以选择让 Code Engine 在您为应用程序开发源时处理本地源的构建。 然后,在映像成熟后,您可以更新已部署的应用程序以引用所需的特定映像。 您可以根据需要重复此过程。
部署更新后的应用程序时,将下载并部署所引用容器映像的最新版本,除非为该映像指定了标记。 如果为映像指定了标记,那么标记的映像将用于部署。
要查找更多代码示例吗? 请查看 样本 IBM Cloud Code Engine GitHub 存储库。