使用建置套件來建置應用程式
建置或映像檔建置是一種機制,可用來從原始碼建立容器映像檔。Code Engine 支援從 Dockerfile 和 Cloud Native 建置套件進行建置。
開始之前
所有 Code Engine 使用者都必須具有「隨收隨付制」帳戶。 指導教學可能會產生成本。 使用「成本預估器」可根據您的預估用量來產生成本預估。 如需相關資訊,請參閱 Code Engine 定價。
設定登錄存取權
因為建置的輸出是儲存在容器登錄中的映像檔,您必須對 Code Engine的映像檔登錄 設定存取權。 若要將映像檔儲存在 Docker Hub 中,請使用 ibmcloud ce secret create --format registry 指令來建立登錄存取權。 在下列範例中,使用 dockerhub 作為登錄存取權的名稱,並指定 Docker Hub ID 作為使用者名稱。 對於 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"}
[...]
已使用建置套件建置策略從原始碼順利建置容器映像檔!
使用容器映像檔
現在已建置容器映像檔並將映像檔推送至已配置的容器登錄位置,您可以在 Code Engine中部署映像檔。 例如,您可以建立使用所建立映像檔的 Code Engine 應用程式。
ibmcloud ce application create --name tutorial-app --image <your_docker_ID>/tutorial
輸出範例
Creating application 'tutorial-app'...
[...]
建置套件的後續步驟
如需相關資訊,請參閱 部署應用程式。
您的原始碼專案是否使用 Dockerfile? 遵循相同的步驟,但指定 Dockerfile 建置策略,以建置應用程式或工作的映像檔。 如需 Dockerfile 的相關資訊,請參閱 Writing a Dockerfile for Code Engine。
尋找更多程式碼範例? 請參閱 IBM Cloud Code Engine GitHub 儲存庫。