使用 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。

開始之前

在使用本端來源之前,請確定您的來源位於本端工作站上可存取的位置。

此範例使用 https://github.com/IBM/CodeEngine 範例; 特別是 helloworld 範例。

  1. 使用下列指令,將 https://github.com/IBM/CodeEngine 範例來源下載至本端工作站。

    git clone https://github.com/IBM/CodeEngine
    
  2. 變更至 CodeEngine\helloworld 目錄。

  3. 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 本機來源的路徑。
  4. 使用 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 來顯示這項建置執行的相關資訊。 您無法在主控台中檢視這項建置執行。

下一步

部署應用程式之後,您可以使用下列 任何 方法來 更新已部署的應用程式 及其參照的程式碼,與您建立或先前更新應用程式的方式無關:

  • 如果您具有容器映像檔,則根據 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 儲存庫