微软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 能够定义成环境变量,在脚本中直接进行引用,这样能够保证后续脚本及构建步骤基本上能够模板化,保存为模板。
相关文章
相关标签/搜索