上一篇文章中,我們通過azure的流水線完成了鏡像推送到鏡像倉庫中去,本篇文章我們繼續開始完成下一步,通過流水線把鏡像從倉庫拉取到任意一台公網的服務器上去,
完成鏡像部署的閉環。
文章配套視頻專欄:
https://space.bilibili.com/38649342/channel/seriesdetail?sid=2267536
首先我們需要先准備一下部署的環境,我們先找一台服務器在上面安裝一下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的更多功能。