Azure DevOps (十) 通過流水線完成Docker鏡像的部署
上一篇文章中,我們通過azure的流水線完成了鏡像推送到鏡像倉庫中去,本篇文章我們繼續開始完成下一步,通過流水線把鏡像從倉庫拉取到任意一台公網的服務器上去,
完成鏡像部署的閉環。
首先我們需要先準備一下部署的環境,我們先找一台服務器在上面安裝一下docker的容器引擎,我的用系統版本是centos的,這裡貼一下安裝命令。
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io
執行完命令之後,執行一下systemctl start docker ,然後通過systemctl status docker 查看一下守護進程的狀態,正常的話如下圖所示:
環境準備好之後,我們接下來去改造我們之前創建好的流水線,我們在我們已經完成了鏡像推送到倉庫的流水線上添加第三個任務,這個任務的目的是通過SSH登錄到
我們的公網服務器上去,然後在我們的服務器上登錄到我們的鏡像倉庫,從倉庫中獲取到我們想要的鏡像,最後進行鏡像的部署。
首先,添加ssh任務
選擇我們裝好了docker環境的服務器,選擇編輯在線腳本,腳本的主要內容是:登錄我們之前做好的鏡像倉庫,從倉庫中獲取我們的鏡像,執行docker run部署
腳本內容如下:
docker login ccr.ccs.tencentyun.com --username=100008582177 --password=****** //這裡我們使用$(Build.BuildId)環境變量,讓流水線自動拉取上一個任務編譯好的鏡像TAG
docker pull docker pull ccr.ccs.tencentyun.com/my-registry/my-image-repository:test-$(Build.BuildId)
docker run -d --name test -p 8080:8081 ccr.ccs.tencentyun.com/my-registry/my-image-repository:test-$(Build.BuildId)
編寫好之後,我們運行一下流水線看看效果
這裡有個小插曲,就是我第一次運行的時候所有的命令都執行成功了,但是到最後流水線依然會報出異常,結果查證之後發現原來是最後docker向控制台輸出了stderr,我去搜索了一番
stackoverfolw上是這麼答覆的:
所以我們需要按照提示去關閉ssh這個任務中的Fail on stderr選項。
被這個玩意坑了我20分鐘,太慘了。
到這裡,我們就完成了通過azure實現從鏡像編譯到部署的全套流程,接下來我們將會開始研究azure的更多功能。