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

azure 環境設置

  • 登陸azuredocker

    地址 https://dev.azure.com/
    無償使用ubuntu

  • 使用微軟帳號就能夠進行登陸。
  • 點擊右上角新建項目
    建立項目
  • 項目信息,儘可能用小寫
    空間信息服務器

建立項目

建立項目
發佈到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倉庫建立完畢,代碼倉庫也建立完畢,準備開始構建。app

構建流程










部署完成後,就能夠看到 docker鏡像上傳到dockerhub了。ssh

在服務器上運行docker

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

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


ui

# 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)

再次部署,就能夠看到部署成功,站點就能夠訪問了。rest

其餘

  • 鏡像名稱必定要增長 帳號前綴,好比說示例中的就是 a304885433/firstapp:xxxx ,這樣在構建鏡像後,才能夠直接推進到這個帳號下的這個倉庫。
  • 服務器運行docker鏡像的時候,必須先中止已運行的鏡像,而後在啓動。 在啓動鏡像時,須要指定name,後續能夠根據name查詢這個鏡像。僅當該鏡像存在,則須要中止並刪除這個鏡像。

後續優化

  • dockerid 能夠定義成環境變量,在腳本中直接進行引用,這樣能夠保證後續腳本及構建步驟基本上能夠模板化,保存爲模板。
相關文章
相關標籤/搜索