上一篇文章中,我們通過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的更多功能。