全部產品
Search
文件中心

CloudOps Orchestration Service:構建鏡像至ACR並部署

更新時間:Jan 03, 2025

本樣本模板是用於從Git拉取代碼構建Docker鏡像,並上傳至ACR,然後批量部署到多台ECS。適用於構建鏡像,儲存到鏡像倉庫並批量部署的情境。該模板既支援在您帳號下已有ECS上構建,還支援臨時開啟一台ECS進行構建,構建完成後自動釋放。同時,該模板支援企業版ACR(收費)和個人版ACR(免費)的上傳和拉取,為您提供多種選擇方案。

前提條件

樣本模板流程

  1. 由您指定代碼源(例如OSSObject Storage Service或者Git),OOS將為代碼源產生臨時連結,用於後續代碼拉取。

  2. 拉取代碼,安裝Docker並執行構建指令碼。鏡像構建完成後,串連ACR將鏡像上傳至指定倉庫。

  1. 拉取已構建的鏡像,批量在多台ECS上以Docker容器部署拉取的鏡像。

使用樣本

代碼源準備

本樣本使用了一個Spring Boot的樣本專案代碼來示範,代碼已上傳到Gitee和GitHub倉庫,如果想要使用,請先fork到自己的倉庫。代碼地址:

建立模板

  1. 登入CloudOps Orchestration Service控制台。

  2. 在左側導覽列,選擇自動化任務 > 自訂工作範本,單擊建立模板

  3. 構建部署地區,選擇構建鏡像至ACR並部署樣本模板,單擊下一步

  4. 流程配置頁簽下,填寫模板參數,然後單擊建立模板

    1. 指定您的代碼源,為下一步拉取代碼做準備,產生一個臨時授權連結。

      本樣本以Gitee為代碼源,填寫該代碼源的所有者組織倉庫以及分支等參數。

      說明
      • 如果您未授權阿里雲從您的GitHub/Gitee讀取您的代碼倉庫,請單擊前往授權來完成授權操作。

      • 如果您之前已經Fork範例程式碼,您只需下拉倉庫,會自動展示您帳號下所有倉庫,請選擇Fork的範例程式碼倉庫。

      2024-12-16_11-42-41.png

    2. 構建Docker鏡像,並上傳到ACR。

      1. 指定代碼源並選擇構建的ECS,再按需提供構建配置指令碼。

        構建鏡像docker.png

        • 代碼源代碼源連結:代碼源選擇git,代碼源連結引用了上一個任務的輸出(預設為authorizedUrl

        • 選擇構建Ecs:需要選擇構建的ECS,支援在已有ECS構建新啟動臨時ECS構建兩種方式。

          說明

          選擇新啟動臨時ECS構建方式,系統會以隨用隨付的方式產生費用。另外,OOS會自動檢測ECS上是否已安裝Docker,如果沒有安裝,會自動為您安裝Docker社區版。

        • 構建配置:按需提供構建準備命令,當前樣本的所有構建都會在Dockerfile內完成,您無需額外準備。

      2. 完成Docker構建並上傳至ACR倉庫。

        OOS會為您執行docker build命令構建鏡像。您需要指定Dockerfile的路徑和docker build命令執行的上下文路徑。

        ACR.png

        • Dockerfile路徑:該路徑為Dockerfile檔案相對於程式碼程式庫根目錄所在的路徑。如下圖,Dockerfile就在代碼根目錄,所以直接填寫檔案名稱Dockerfile。

          image

        • 上下文路徑:ContextPath為docker build命令執行內容路徑,填寫相對於代碼根目錄的路徑,如果不填寫,預設為和Dockerfile同一目錄。

        • Container Registry類型:您需要提供上傳至ACR的相關資訊,支援企業版(付費)和個人版(免費)方式。

          Container Registry類型

          說明

          相關連結

          個人版

          您可以依次選擇您的使用者名稱、密碼以及想要上傳的倉庫名稱。

          建立個人版執行個體

          企業版

          您可以依次下拉選擇當前帳號下的Container Registry執行個體ID,命名空間以及要上傳的倉庫名稱。

          建立企業版執行個體

          最後您需要提供構建的鏡像版本,預設值是基於當前日期和執行ID構成的,您可按需替換成適合您專案的鏡像版本。然後您還需要確認是否通過內網上傳鏡像,可參考配置專用網路的存取控制

    3. 從ACR拉取鏡像並部署。

      1. 選擇要部署到的目標ECS以及拉取的鏡像資訊。

        image

        • 目標執行個體:支援手動選擇、指定選擇等多種方式,您也可以選擇多個ECS批量部署。

        • 鏡像資訊:需拉取上一步上傳到ACR的鏡像,請選擇您上傳到的ACR類型(即Container Registry類型),其他資訊自動引用上一步的任務輸出(預設為imageVersionusernamepasswordacrIdnamespace以及repoName),無需重複填寫。

          說明

          能否通過內網拉取和上一步內網上傳是同樣的條件,參考文檔配置專用網路的存取控制

      2. 指定Docker的運行選項。

        例如樣本填寫為-p 8080:8080,這些選項會被添加到docker run命令中,最終會執行。

        image

        docker run -p 8080:8080 <image_name>
        說明

        --name選項不開放指定,因為OOS會把容器命名為一個預設的、與ACR倉庫名稱一一對應的名字。每次docker run運行當前鏡像版本之前,會先檢查是否有同名鏡像正在運行,如有,會先停止該容器再docker run運行目前的版本。這樣您下次再往ACR倉庫上傳最新版本鏡像後,可直接再次運行該模板,無需手動停止上個版本的鏡像對應的容器。

      3. 可選)設定任務的並發控制參數,控制批量部署到多台ECS的並發速率。

    4. 單擊建立模板

執行模板

  1. 登入CloudOps Orchestration Service控制台。

  2. 在左側導覽列,選擇自動化任務 > 自訂工作範本

  3. 自訂工作範本頁面,找到已建立的模板,單擊對應操作列下的建立執行

  4. 基本資料階段,配置相應參數,單擊下一步:設定參數

  5. 設定參數階段,如果沒有可配置的參數,直接單擊下一步:確定

  6. 單擊建立

    在任務執行管理頁面,執行狀態顯示為成功時,表示模板執行任務已完成。

    執行模板結果-zh.png

  7. 登入Elastic Compute Service控制台

  8. 找到您選擇的ECS執行個體並遠端連線該執行個體。

    具體操作,請參見使用Workbench工具以SSH協議登入Linux執行個體

  9. 執行以下命令,確認本地構建部署是否成功。

    curl http://localhost:8080/hello

    看到返回欄位,即表明部署成功。image

    您也可以執行docker ps來查看對應的容器。image

後續使用

後續您的代碼有改動或更新,只需把新代碼上傳到Git倉庫,重新執行該CI/CD模板,該模板會先停止當前容器運行,重建鏡像並推送至ACR,然後,會批量的部署最新版本的鏡像到您指定的ECS上。當然,如果您有需要調整模板,也可以更新模板後再重新執行。