微軟Azure DevOps 使用docker 持續集成 dotnet


azure 環境設置

  • 登錄azure

    地址 https://dev.azure.com/
    免費使用

  • 使用微軟賬號就可以進行登錄。

  • 點擊右上角新建項目
    創建項目

  • 項目信息,盡量用小寫
    空間信息

創建項目

創建項目
發布到azure
上傳代碼

修改默認的dockerfile

```
FROM microsoft/dotnet:2.1-aspnetcore-runtime-stretch-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM microsoft/dotnet:2.1-sdk-stretch AS build

RUN mkdir -p /app
WORKDIR /src
COPY . .
RUN dotnet restore "firstapp.csproj"
RUN dotnet build "firstapp.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "firstapp.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "firstapp.dll"]
    ```

准備dockerhub賬號

到現在為止,docker倉庫創建完畢,代碼倉庫也創建完畢,准備開始構建。

構建流程










部署完成后,就可以看到 docker鏡像上傳到dockerhub了。

在服務器上運行docker

這里演示用ubuntu服務器, 首先安裝docker環境
sudo apt-get install docker.io
安裝成功后在終端輸入docker,確保docker安裝ok。

增加構建步驟,ssh到服務器,自動拉取鏡像並運行。


	# stop and remove all containers
	currcontainer=$(docker ps -a |  grep "$(Build.Repository.Name)_feature*"  | awk '{print $1}')
	if [ "${currcontainer}" != "" ]; then
	   docker stop $(docker ps -a |  grep "$(Build.Repository.Name)_feature*"  | awk '{print $1}')
	   docker rm -f $(docker ps -a |  grep "$(Build.Repository.Name)_feature*"  | awk '{print $1}')
	fi
	# run curr
	docker pull a304885433/$(Build.Repository.Name):$(Build.BuildId)
	docker run -d -p 8002:80 --name=$(Build.Repository.Name)_feature a304885433/$(Build.Repository.Name):$(Build.BuildId)

再次部署,就可以看到部署成功,站點就可以訪問了。

其他

  • 鏡像名稱一定要增加 賬號前綴,比如說示例中的就是 a304885433/firstapp:xxxx ,這樣在構建鏡像后,才可以直接推動到這個賬號下的這個倉庫。
  • 服務器運行docker鏡像的時候,必須先停止已運行的鏡像,然后在啟動。 在啟動鏡像時,需要指定name,后續可以根據name查詢這個鏡像。僅當該鏡像存在,則需要停止並刪除這個鏡像。

后續優化

  • dockerid 可以定義成環境變量,在腳本中直接進行引用,這樣可以保證后續腳本及構建步驟基本上可以模板化,保存為模板。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM