微软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仓库创建完毕,代码仓库也创建完毕,准备开始构建。

构建流程

322106-20190318224546601-1653266387.png
322106-20190318224635799-638268571.png
322106-20190318224656122-1343754247.png
322106-20190318224712313-554165968.png
322106-20190318224906277-78883111.png
322106-20190318224934404-2121879748.png
322106-20190318230309933-1445514224.png
322106-20190318230357536-1793089954.png
322106-20190318230434340-1954283052.png
322106-20190318230455637-1671266842.png

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

在服务器上运行docker

这里演示用ubuntu服务器, 首先安装docker环境
sudo apt-get install docker.io
安装成功后在终端输入docker,确保docker安装ok。

增加构建步骤,ssh到服务器,自动拉取镜像并运行。
322106-20190318230902717-1817622882.png
322106-20190318231025799-1707908647.png
322106-20190318232027048-921230732.png

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

322106-20190318232328369-1293098484.png

322106-20190318232347326-636055241.png

再次部署,就可以看到部署成功,站点就可以访问了。

其他

  • 镜像名称一定要增加 账号前缀,比如说示例中的就是 a304885433/firstapp:xxxx ,这样在构建镜像后,才可以直接推动到这个账号下的这个仓库。
  • 服务器运行docker镜像的时候,必须先停止已运行的镜像,然后在启动。 在启动镜像时,需要指定name,后续可以根据name查询这个镜像。仅当该镜像存在,则需要停止并删除这个镜像。

后续优化

  • dockerid 可以定义成环境变量,在脚本中直接进行引用,这样可以保证后续脚本及构建步骤基本上可以模板化,保存为模板。

转载于:https://www.cnblogs.com/codealone/p/10555713.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值