Docker鏡像部署物
如果應用源檔案是儲存在Container RegistryACR(個人版或企業版)中的Docker鏡像,可使用此部署物類型發布應用。
對於第三方鏡像倉庫,通過僅執行命令部署物進行部署。
工作原理
-
當發布目標為ESS伸縮組時,部署期間伸縮活動會被暫停,部署結束後(無論成功或失敗)將自動回復。
-
部署流程遵循先停後啟原則,即每次部署都會先執行停止指令碼,再執行啟動指令碼。
-
Docker鏡像會在部署時自動拉取至ECS執行個體,啟動指令碼中無需包含拉取鏡像的命令。
-
建立並發布部署物。
將應用源檔案資訊、啟動指令碼和停止指令碼配置為部署物。
建立發布任務,選擇發布模式,將部署物發布至目標應用分組。
-
發布任務的自動化部署流程。
-
擷取部署物資訊,包括Docker鏡像的資訊和應用的啟動/停止指令碼。
-
拉取Docker鏡像:從鏡像倉庫拉取鏡像至ECS執行個體。
-
執行停止指令碼:執行應用停止指令碼,停止舊版本應用。
-
執行啟動指令碼:執行應用啟動指令碼,啟動新版本應用。
-
適用範圍
-
僅支援部署到Linux執行個體。
-
啟動和停止指令碼僅支援Shell類型的指令碼。
操作步驟
-
準備應用、分組和ECS執行個體。
在開始部署前,需要先在ECS應用管理中建立應用和分組,並將準備好的ECS執行個體加入到分組。
-
如果沒有ECS執行個體,前往ECS控制台-自訂購買頁面,建立Linux作業系統的ECS執行個體。
建議ECS鏡像選擇Alibaba Cloud Linux 3.2104 LTS 64位或Ubuntu 22.04 64位。後續樣本中的指令碼基於這兩種鏡像編寫。如果使用其他鏡像,請參考樣本並根據實際情況修改指令碼。
-
前往ECS控制台-應用管理頁面,單擊匯入已有資源建立,建立應用和應用分組,並匯入ECS執行個體到應用分組。
-
為分組內的ECS執行個體安裝Docker。在應用分組的營運管理頁簽下,選擇安裝/卸載擴充程式來大量安裝Docker。
如果ECS執行個體是基於自訂鏡像建立的,無法通過此方式安裝擴充程式。需要遠端連線到執行個體並手動安裝Docker。
-
-
建立Docker鏡像部署物。
-
拉取樣本鏡像到本地,然後推送鏡像到企業版ACR或個人版ACR倉庫。
docker pull aliyun-computenest-opensource-registry.cn-hangzhou.cr.aliyuncs.com/default/aliyun-code-deploy:latest -
前往ECS控制台-應用管理頁面,在我的應用程式頁簽下,單擊目標應用程式名稱。
-
在應用詳情頁,選擇部署物頁簽,然後單擊建立部署物。
-
在建立部署物頁面,部署物類型選擇Docker鏡像,並配置以下關鍵參數。
-
ACR執行個體資訊: 填寫ACR執行個體資訊。填寫鏡像版本後,系統將自動產生鏡像地址,該地址需在應用啟動指令碼中使用。
重要對於個人版類型,請在應用詳情頁的進階設定中配置個人版ACR的使用者名稱和密碼!
-
工作目錄:應用啟動/停止指令碼的執行目錄。樣本:
/root/deploy。 -
應用啟動指令碼:將
<鏡像地址>替換為實際地址。### 發布時,Docker鏡像會被自動拉取到ECS上,可直接進行容器啟動操作。 ### 啟動目前的版本的容器 ### Start the current version of the container start_application() { image_name="<鏡像地址>" container_name="my-container" docker run -d -p 8080:8080 --name ${container_name} ${image_name} } start_application -
stop_application() { # 通過容器名查詢容器是否存在,如存在則刪除容器 # Query whether the container exists by the container name, and delete the container if it exists container_name="my-container" container_id=$(docker ps -aq -f name=${container_name}) if [ -n "$container_id" ]; then docker rm -f $container_id fi } stop_application
-
-
所有參數配置完成後,單擊確定儲存部署物。
-
-
返回部署物列表,找到剛建立的部署物,單擊發布。選擇目標分組,單擊確定開始部署。
-
結果驗證。
進入目標執行個體詳情頁,單擊遠端連線,選擇通過Workbench遠端連線。根據頁面提示登入,進入終端頁面。
-
執行
curl http://localhost:8080/hello命令。返回Alibaba Spring Sample!表示部署成功。
重要欄位
|
欄位 |
說明 |
|
Container Registry地區 |
ACR執行個體所在地區 |
|
Container Registry執行個體ID |
企業版ACR執行個體ID |
|
命名空間 |
鏡像倉庫所在命名空間 |
|
倉庫名稱 |
鏡像倉庫名稱 |
|
鏡像版本 |
待部署的Docker鏡像的版本 |
|
是否通過內網拉取鏡像 |
若選擇通過內網拉取鏡像,需確保 ACR 執行個體和 ECS 執行個體位於同一VPC內,並已配置專用網路的存取控制。 |
|
工作目錄 |
應用的啟動/停止指令碼的工作目錄。
|
|
應用啟動指令碼 |
用於啟動應用的Shell指令碼。 |
|
應用停止指令碼 |
用於停止應用的Shell指令碼。 例如,以下指令碼可停止名為
|