Azure DevOps (十) 通過流水線完成Docker映象的部署

Tassdar發表於2022-04-12

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

相關文章