從儲存庫原始碼部署應用程式
您可以透過 IBM Cloud® Code Engine 控制台和命令列介面 (CLI),直接從位於 Git 儲存庫中的原始碼部署您的應用程式。 了解 透過 Code Engine 建立個人形象 時,您能獲得哪些優勢。
從主控台從儲存庫原始碼部署應用程式
您可以使用主控台直接從原始碼部署應用程式。
開始之前,請 規劃建置。 您也可以找到 建立 Dockerfile 的提示。
Code Engine 可以自動將映像檔推送 (上傳) 至帳戶中的 IBM Cloud® Container Registry 名稱空間,甚至為您建立名稱空間。 若要將映像檔上傳至不同的 Container Registry 帳戶或專用 Docker Hub 帳戶,請參閱 存取容器登錄。
如需存取映像檔登錄所需之許可權的相關資訊,請參閱 設定映像檔登錄的權限。
- 開啟 Code Engine 主控台。
- 選擇「開始建立」。
- 請從可用專案清單中選取一個專案。 您也可以 建立新的。 請注意,您必須具有選取的專案才能部署應用程式。
- 選擇應用程式。
- 請輸入應用程式的名稱。 請為您的應用程式指定一個在該專案內具有唯一性的名稱。
- 選擇「從原始碼建立容器映像」。
- 按一下 指定建置詳細資料。
- 選取來源儲存庫,例如
https://github.com/IBM/CodeEngine。 因為我們使用不需要認證的範例來源,所以請選取None以取得 Code repo 存取權。 您可以選擇性地提供分支名稱。 如果您未提供分支名稱,且將欄位保留空白,則 Code Engine 會自動使用指定儲存庫的預設分支。 按下一步。 - 選取建置的策略及建置的資源。 如需建置選項的相關資訊,請參閱 規劃建置。 按下一步。
- 選取容器登錄位置,例如
IBM Registry Dallas,以指定建置輸出映像檔的儲存位置。 如果您的登錄是專用的,則必須對它 設定存取權。 - 提供建置輸出映像檔儲存位置的登錄資訊。 選擇現有的 Registry 機密,或建立一個新的。 如果您要將映像檔建置至帳戶中的 Container Registry 實例,則可以選取
Code Engine managed secret,並讓 Code Engine 為您建立及管理密碼。 - 選取映像檔的名稱空間、名稱及標籤。 如果您要將映像檔建置至帳戶中的 IBM Cloud Container Registry 實例,則可以選取現有名稱空間,或讓 Code Engine 為您建立並管理名稱空間。
- 按一下完成。
- 修改應用程式的任何執行時期設定或環境變數。 如需這些選項的相關資訊,請參閱 應用程式端點可見性的選項 及 部署應用程式的選項。
- 按一下建立。
- 提交建置執行之後,建置的容器映像檔會傳送至 Container Registry,然後您的應用程式會為您取回映像檔並部署。 應用程式狀態變更為 備妥之後,您可以測試應用程式。 按一下 測試應用程式,然後在「測試應用程式」窗格中按一下 傳送要求。 若要在網頁中開啟應用程式,請按一下應用程式 URL。
最終會自動刪除完成的建置執行。 當您的建置執行是以建置配置為基礎時,如果建置執行成功,則會在 3 小時之後刪除這項建置執行。 若建置執行未成功,該建置執行紀錄將於 48 小時後被刪除。
現在您已部署應用程式,您可以檢視應用程式修訂及任何執行中實例的相關資訊,以及配置詳細資料。
使用 CLI 從儲存庫原始碼部署應用程式
您可以使用 CLI 直接從儲存庫原始碼部署應用程式。 使用 app create 命令,既可從您的 Git 儲存庫原始碼建立映像檔,亦可將您的應用程式部署至該處並引用此已建立的映像檔。
開始之前
- 設定 Code Engine CLI 環境。
- 建立並使用專案。
在此實務範例中,Code Engine 會從 Git 儲存庫來源建置映像檔,自動將映像檔上傳至容器登錄,然後建立並部署應用程式以參照此建置映像檔。 如果映像要位於 IBM Cloud® Container Registry 帳戶中,您只需要提供應用程式的名稱和 URL 到 Git 儲存庫。 在這種情況下,Code Engine 會為您管理命名空間。 不過,如果您想要使用不同的容器登錄,則必須指定該容器登錄的映像檔及登錄密鑰。 如需選項的完整清單,請參閱 ibmcloud ce app create 指令。
如需存取映像檔登錄所需之許可權的相關資訊,請參閱 設定映像檔登錄的權限。
下列範例 application create 指令會建立並部署 myapp 應用程式,該應用程式會參照從 https://github.com/IBM/CodeEngine 建置來源建置的映像檔。 此指令會自動建置映像檔,並將映像檔上傳至帳戶中的 IBM Cloud® Container Registry 名稱空間,且應用程式會參照此建置映像檔。 藉由指定 --build-context-dir 選項,建置會使用 helloworld 目錄中的原始檔。 此範例指令使用預設 dockerfile 策略,以及預設 medium 建置大小。 因為儲存庫的分支名稱未使用 --build-commit 選項指定,所以 Code Engine 會自動使用指定儲存庫的預設分支。
ibmcloud ce application create --name myapp --build-source https://github.com/IBM/CodeEngine --build-context-dir helloworld
輸出範例
Creating application 'myapp'...
Submitting build run 'myapp-run-220411-13abcdefg'...
Creating image 'private.us.icr.io/ce--abcde-4svg40kna19/app-myapp:220411-1756-if8jv'...
Waiting for build run to complete...
Build run status: 'Running'
Build run completed successfully.
Run 'ibmcloud ce buildrun get -n myapp-run-220411-13abcdefg' to check the build run status.
Waiting for application 'myapp' to become ready.
Configuration 'myapp' 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' to check the application status.
OK
https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
請注意,application create 指令的輸出提供在建立及部署應用程式之前,建置執行進度的相關資訊。
在此範例中,建置映像檔會上傳至 Container Registry中的 ce--abcde-4svg40kna19 名稱空間。
下表彙總在此範例中與 app create 指令搭配使用的選項。 如需指令及其選項的相關資訊,請參閱 ibmcloud ce app create 指令。
| 選項 | 說明 |
|---|---|
--name |
應用程式的名稱。 請使用專案內唯一的名稱。 此值是必要項目。 -名稱必須以小寫字母開頭。 -名稱必須以小寫英數字元結尾。 -名稱必須是 63 個字元或更少,且可以包含字母、數字及連字號 (-)。 |
--build-source |
包含您原始碼的 Git 套件庫的 URL;例如 https://github.com/IBM/CodeEngine。 |
--build-context-dir |
儲存庫中包含建置套件檔案或 Dockerfile 的目錄。 這是選用值。 |
下列輸出顯示此範例的 application get 指令結果,包括建置的相關資訊。
輸出範例
[...]
Name: myapp
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.4svg40kna19.us-south.codeengine.appdomain.cloud
Cluster Local URL: http://myapp.4svg40kna19.svc.cluster.local
Console URL: https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration
Status Summary: Application deployed successfully
Environment Variables:
Type Name Value
Literal CE_API_BASE_URL https://api.private.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--27fe9-4svg40kna19/app-myapp:220414-2010-sqsoj
Resource Allocation:
CPU: 1
Ephemeral Storage: 400M
Memory: 4G
Registry Secrets:
ce-auto-icr-private-us-south
Revisions:
myapp-00001:
Age: 23m
Latest: true
Traffic: 100%
Image: private.us.icr.io/ce--27fe9-4svg40kna19/app-myapp: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-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-run-220414-161009244' for details.
[...]
既然已從儲存庫原始碼建立及部署您的應用程式,您可以使用 ibmcloud ce app update 指令來更新應用程式以符合您的需求。 如需更新應用程式的相關資訊,請參閱 更新應用程式。
如果您想要更新來源以與應用程式搭配使用,則必須在 application update 指令上提供 --build-source 選項。
從儲存庫原始碼或使用 CLI 從 本端來源 部署應用程式時,產生的建置執行不會以建置配置為基礎。 最終會自動刪除完成的建置執行。 如果建置執行成功,則會在 1 小時之後刪除非基於建置配置的建置執行。 如果建置執行不成功,則會在 24 小時之後刪除此建置執行。 您只能使用 CLI 來顯示這項建置執行的相關資訊。 您無法在主控台中檢視這項建置執行。
下一步
-
應用程式部署完成後,請透過 URL.NET 網站 存取您的應用程式。
-
您可以建立 自訂網域對映,並將它指派給應用程式。 如需在多個地區中使用自訂網域名稱部署應用程式的相關資訊,請參閱 配置高可用性應用程式。
-
既然您的應用程式已部署,請考慮讓應用程式以事件驅動。 透過使用事件訂閱,您可以透過 定期排程 來觸發應用程式,或設定應用程式對事件 (例如 檔案上傳 或 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 儲存庫中的範例。