• 微软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 可以定义成环境变量,在脚本中直接进行引用,这样可以保证后续脚本及构建步骤基本上可以模板化,保存为模板。
  • 相关阅读:
    51Nod-1013 3的幂的和【快速模幂+逆元】
    51Nod-1082 与7无关的数【进制+打表】
    51Nod-1080 两个数的平方和【暴力法】
    51Nod-1015 水仙花数【进制+查表搜索】
    51Nod-1003 阶乘后面0的数量【分析思维】
    51Nod-1002 数塔取数问题【DP】
    51Nod-1179 最大的最大公约数【暴力】
    51Nod-1018 排序【排序】
    51Nod-1126 求递推序列的第N项【递推序列+模除】
    51Nod-1031 骨牌覆盖【递推】
  • 原文地址:https://www.cnblogs.com/codealone/p/10555713.html
Copyright © 2020-2023  润新知