天天看點

Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署

前提:上篇文章中,已建立項目TestXujk,本篇詳細講述devops操作

1、在項目設定中,建立源代碼git服務連接配接

Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
  • 點選“建立服務連接配接”,建立源代碼git托管倉庫連接配接,我這裡使用的是gitee,是以這裡選“其他Git”
    Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
    Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
  • 點選儲存,即可建立連接配接
    Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署

2、點選管道,建立管道

Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
  • 第一步,選擇你的代碼倉庫
    Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
    Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
  • 選擇管道模闆,我們打算用docker部署應用,這裡我們選:Docker容器,點:應用
    Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
    Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
  • 設定dockerfile的檔案路徑,容器系統資料庫類型,随便選一個即可
    Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
    Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
  • 後面推送鏡像(Push an image)操作,先不操作(沒有鏡像倉庫可推),執行一下管道,看能否生成鏡像檔案

3、執行一下管道,看能否生成鏡像檔案

Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
發生錯誤1:發現代理機上,源代碼路徑沒有Dockerfile檔案,繼續送出源代碼
Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
發生錯誤2:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:

原因:Ubuntu系統中,執行docker指令,需要添加sudo
通過将使用者添加到docker使用者組可以将sudo去掉,指令如下
sudo groupadd docker #添加docker使用者組 
sudo gpasswd -a $USER docker #将登陸使用者加入到docker使用者組中 
newgrp docker #更新使用者組
      
Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
備注:一定要重新啟動ubuntu虛拟機才管用
還有一種方法:在安裝代理服務的時候,啟用如下指令安裝,不推薦
sudo ./svc.sh install root
      
再次運作管道,建構鏡像成功
Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
備注:Push指令不用管,因為沒有配置鏡像伺服器資訊
Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署

4、建構前,添加:指令行 操作,删除已存在鏡像

Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
運作管道,發現以前存在的鏡像被删除,建立了一個新版本的鏡像
Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
參考指令行
currimages=$(docker images -a |  grep "coreapp3"  | awk '{print $3}')
if [ "${currimages}" != "" ]; then 
   docker rmi -f $(docker images -a |  grep "coreapp3"  | awk '{print $3}')
fi
      

5、運作指令行,部署運作容器

說明:我們這裡隻示範下部署步驟,也在代理池的虛拟機中,實際上,一般代理池虛拟機建構完程式,建構鏡像後,先推送到鏡像伺服器,然後在釋出的環節中,通過SSH方式連接配接應用伺服器主機,拉取鏡像,然後進行運作部署
  • 修改管道配置,添加任務-指令行任務
    Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
  • 然後我們編寫腳本,建立應用,腳本參考如下:

    #!/bin/bash name="netcoreapp01" cid=`docker inspect --format '{{.Id}}' ${name} 2>/dev/null` if [[ ${#cid} -gt 0 ]]; then docker stop $name docker rm $name echo "successed deleted container ${name}" fi docker run -it -d -p 8002:80 --name netcoreapp01 --privileged=true coreapp3:$(Build.BuildId) docker logs netcoreapp01

    腳本說明:查找容器名為netcoreapp01的應用,如果存在,則停止應用,删除應用;然後通過docker run指令重新建立應用容器
  • 運作管道,發現部署可以成功
    Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
  • 進入虛拟機,檢視程式運作狀态:
    Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署
  • 通過http://ip:8002 位址進行通路
    Azure 實踐(3)- Azure Devops建構.netcore項目,打包Docker鏡像+運作容器部署