本樣本模板是用於從Git拉取代碼構建Docker鏡像,並上傳至ACR,然後批量部署到多台ECS。適用於構建鏡像,儲存到鏡像倉庫並批量部署的情境。該模板既支援在您帳號下已有ECS上構建,還支援臨時開啟一台ECS進行構建,構建完成後自動釋放。同時,該模板支援企業版ACR(收費)和個人版ACR(免費)的上傳和拉取,為您提供多種選擇方案。
前提條件
您已擁有企業版或個人版ACR。更多資訊,請參見Container RegistryACR、個人版和企業版執行個體差異化說明、建立個人版執行個體。
樣本模板流程
由您指定代碼源(例如OSSObject Storage Service或者Git),OOS將為代碼源產生臨時連結,用於後續代碼拉取。
拉取代碼,安裝Docker並執行構建指令碼。鏡像構建完成後,串連ACR將鏡像上傳至指定倉庫。
拉取已構建的鏡像,批量在多台ECS上以Docker容器部署拉取的鏡像。
使用樣本
代碼源準備
本樣本使用了一個Spring Boot的樣本專案代碼來示範,代碼已上傳到Gitee和GitHub倉庫,如果想要使用,請先fork到自己的倉庫。代碼地址:
Gitee:gitee範例程式碼(中國內地建議使用Gitee)
Github:github範例程式碼(海外地區建議使用Github)
建立模板
在左側導覽列,選擇,單擊建立模板。
在構建部署地區,選擇構建鏡像至ACR並部署樣本模板,單擊下一步。
在流程配置頁簽下,填寫模板參數,然後單擊建立模板。
指定您的代碼源,為下一步拉取代碼做準備,產生一個臨時授權連結。
本樣本以Gitee為代碼源,填寫該代碼源的所有者、組織、倉庫以及分支等參數。
說明如果您未授權阿里雲從您的GitHub/Gitee讀取您的代碼倉庫,請單擊前往授權來完成授權操作。
如果您之前已經Fork範例程式碼,您只需下拉倉庫,會自動展示您帳號下所有倉庫,請選擇Fork的範例程式碼倉庫。

構建Docker鏡像,並上傳到ACR。
指定代碼源並選擇構建的ECS,再按需提供構建配置指令碼。

代碼源和代碼源連結:代碼源選擇
git,代碼源連結引用了上一個任務的輸出(預設為authorizedUrl。選擇構建Ecs:需要選擇構建的ECS,支援在已有ECS構建和新啟動臨時ECS構建兩種方式。
說明選擇新啟動臨時ECS構建方式,系統會以隨用隨付的方式產生費用。另外,OOS會自動檢測ECS上是否已安裝Docker,如果沒有安裝,會自動為您安裝Docker社區版。
構建配置:按需提供構建準備命令,當前樣本的所有構建都會在Dockerfile內完成,您無需額外準備。
完成Docker構建並上傳至ACR倉庫。
OOS會為您執行
docker build命令構建鏡像。您需要指定Dockerfile的路徑和docker build命令執行的上下文路徑。
Dockerfile路徑:該路徑為Dockerfile檔案相對於程式碼程式庫根目錄所在的路徑。如下圖,Dockerfile就在代碼根目錄,所以直接填寫檔案名稱Dockerfile。

上下文路徑:ContextPath為
docker build命令執行內容路徑,填寫相對於代碼根目錄的路徑,如果不填寫,預設為和Dockerfile同一目錄。Container Registry類型:您需要提供上傳至ACR的相關資訊,支援企業版(付費)和個人版(免費)方式。
Container Registry類型
說明
相關連結
個人版
您可以依次選擇您的使用者名稱、密碼以及想要上傳的倉庫名稱。
企業版
您可以依次下拉選擇當前帳號下的Container Registry執行個體ID,命名空間以及要上傳的倉庫名稱。
最後您需要提供構建的鏡像版本,預設值是基於當前日期和執行ID構成的,您可按需替換成適合您專案的鏡像版本。然後您還需要確認是否通過內網上傳鏡像,可參考配置專用網路的存取控制。
從ACR拉取鏡像並部署。
選擇要部署到的目標ECS以及拉取的鏡像資訊。

目標執行個體:支援手動選擇、指定選擇等多種方式,您也可以選擇多個ECS批量部署。
鏡像資訊:需拉取上一步上傳到ACR的鏡像,請選擇您上傳到的ACR類型(即Container Registry類型),其他資訊自動引用上一步的任務輸出(預設為
imageVersion、username、password、acrId、namespace以及repoName),無需重複填寫。說明能否通過內網拉取和上一步內網上傳是同樣的條件,參考文檔配置專用網路的存取控制。
指定Docker的運行選項。
例如樣本填寫為
-p 8080:8080,這些選項會被添加到docker run命令中,最終會執行。
docker run -p 8080:8080 <image_name>說明--name選項不開放指定,因為OOS會把容器命名為一個預設的、與ACR倉庫名稱一一對應的名字。每次docker run運行當前鏡像版本之前,會先檢查是否有同名鏡像正在運行,如有,會先停止該容器再docker run運行目前的版本。這樣您下次再往ACR倉庫上傳最新版本鏡像後,可直接再次運行該模板,無需手動停止上個版本的鏡像對應的容器。(可選)設定任務的並發控制參數,控制批量部署到多台ECS的並發速率。
單擊建立模板。
執行模板
在左側導覽列,選擇。
在自訂工作範本頁面,找到已建立的模板,單擊對應操作列下的建立執行。
在基本資料階段,配置相應參數,單擊下一步:設定參數。
在設定參數階段,如果沒有可配置的參數,直接單擊下一步:確定。
單擊建立。
在任務執行管理頁面,執行狀態顯示為成功時,表示模板執行任務已完成。

找到您選擇的ECS執行個體並遠端連線該執行個體。
具體操作,請參見使用Workbench工具以SSH協議登入Linux執行個體。
執行以下命令,確認本地構建部署是否成功。
curl http://localhost:8080/hello看到返回欄位,即表明部署成功。

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