使用 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.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--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.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 儲存庫。