雲效流水線具備Docker部署能力,最終部署的目標來源於流水線任務鏡像構建產物,本文將主要介紹如何使用流水線構建鏡像完成Docker 部署任務。
建立Docker 部署流水線
在流水線Flow首頁,單擊建立流水線,選擇模板Java · 測試、構建鏡像建立。
-
在流水線源階段,單擊添加流水線源,選擇代碼源類型Codeup,配置服務串連以及程式碼程式庫相關參數。 在流水線編輯頁面,單擊左側 添加流水線源,在右側彈出的面板中選擇 代碼源 頁簽,然後選擇 Codeup。佈建服務串連、代碼倉庫(選擇
springboot)、預設分支(選擇master),並開啟 代碼源觸發 開關,單擊 添加 完成流水線源配置。 -
在構建鏡像階段,單擊鏡像構建並推送至ACR(個人版),選擇已授權的服務串連及ACR地區與倉庫,指定標籤與Dockerfile 路徑,樣本請參見雲效spring-boot樣本dockerfile。
其中,標籤可填寫變數
${DATETIME}以自動產生時間戳記,鏡像緩衝可選擇遠端緩衝。
配置 Docker 部署任務
在新階段,單擊新的任務,通過 新增工作。
在任務選擇面板左側選擇 部署 分類,然後選擇 Docker部署(主機Docker部署)任務卡片。
-
在Docker 部署任務,選擇一個已建立的主機群組或選擇建立主機群組。在部署配置地區,將 執行使用者 設定為
root,並在下方的 部署指令碼 編輯區中編寫 Docker 部署指令碼(例如docker run $image,其中$image為在指令碼下方變數處定義的上遊輸出或自訂變數)。說明Docker部署主機需要您提前自行在機器上安裝 Docker 軟體。
-
配置Docker部署指令碼。
-
當您所部署的鏡像來自您的私人倉庫時,需要提供登入授權資訊,為了安全起見,您可以使用 Flow 提供的變數功能,在變數中設定 Docker 登入使用者名稱
DOCKER_USERNAME和密碼DOCKER_PASSWORD。在目標流水線編輯頁面,選擇,單擊建立變數,組態變數資訊。組態變數時,將兩個變數的私密開關設定為開啟狀態,使預設值以星號遮蔽顯示。
-
在部署指令碼中使用登入鏡像倉庫命令操作,
echo ${DOCKER_PASSWORD} | docker login --username ${DOCKER_USERNAME} --password-stdin registry.cn-hangzhou.aliyuncs.com(鏡像倉庫地址根據您的專案實際情況輸入)。接下來通過執行相關命令即可對私人倉庫鏡像進行操作。 如下是部署指令碼中登入鏡像倉庫的操作命令。echo ${DOCKER_PASSWORD} | docker login --username ${DOCKER_USERNAME} --password-stdin registry.cn-hangzhou.aliyuncs.com
-
-
添加變數,分為如下兩種類型:
-
一種是上遊輸出變數,上遊輸出產物可以是阿里雲鏡像構建產物,也可以是自訂鏡像構建產物。配置上遊產物的變數
image鏡像地址。 -
另一種可以配置自訂變數,在執行命令時變數會寫入機器環境變數中,從而可以直接使用,例如部署指令碼,添加自訂變數把
appname賦值flow-example當作容器名稱。在部署指令碼中,第一行為登入鏡像倉庫命令:docker login --password=${DOCKER_PASSWORD} --username=${DOCKER_USERNAME} registry.cn-hangzhou.aliyuncs.com。在下方變數地區中,設定image為標籤.$(DATETIME),appname為flow-example。部署策略中暫停方式選擇第一批暫停,分批數量設為2。 -
如下是部署指令碼中一個典型的運行Docker容器命令。
docker run -d --name ${appname} ${image}
-
-
配置部署策略,避免不穩定發布對使用者的影響,保障業務交付的穩定。
運行並查看Docker部署詳情
在運行流水線任務完成後,在階段,單擊部署詳情,可查看具體批次與日誌。部署詳情頁面顯示部署任務狀態為已完成,目標主機 10.0.0.26 狀態為線上,對應執行個體 ID 為 i-bp13r1mbmowyr79fbi1m,執行個體名稱為 with-flow-ecs。可在操作列單擊日誌查看部署日誌。