• 微软Azure DevOps自动化部署


    1.准备一个https://hub.docker.com账号,申请一个免费的镜像仓库(免费账户可以申请一个)

    创建docker远程镜像库

     

     

    2.新建一个mvc的项目


    给这个项目加上Dockerfile文件(AzureDemo/AzureDemo/..中添加)

    FROM dukecheng/aspnetcore:aspnetcore-runtime-2.2.0
    ARG source
    WORKDIR /app
    EXPOSE 80
    COPY ${source:-obj/Docker/publish} .
    ENTRYPOINT ["dotnet", "AzureDemo.dll"]

     在sln同级添加三个文件
    azure_build.sh

    workspace=`pwd`
    docker run --rm -v ~/.cache:/root/.cache -v ~/.config:/root/.config -v ~/.gnupg:/root/.gnupg -v ~/.local:/root/.local -v ~/.npm:/root/.npm -v `pwd`/SanBlog:/data digitallyseamless/nodejs-bower-grunt bash -c "bower install && npm install"
    docker run --rm -v ~/.dotnet:/root/.dotnet -v ~/.nuget:/root/.nuget -v ${workspace}:/src --workdir /src dukecheng/aspnetcore:aspnetcore-sdk-2.2.100-preview3-009430 bash -c "dotnet restore ./AzureDemo.sln && rm -rf ./AzureDemo/AzureDemo/obj/Docker/publish && dotnet publish ./AzureDemo/AzureDemo.csproj -c Release -o ./obj/Docker/publish"

    azuredemo.base.yml

    # Docker image
    # Build a Docker image to deploy, run, or push to a container registry.
    # Add steps that use Docker Compose, tag images, push to a registry, run an image, and more:
    # https://docs.microsoft.com/azure/devops/pipelines/languages/docker
    
    pool:
    vmImage: 'Ubuntu 16.04'
    
    variables:
    imageName: 'your-container-image-name:$(build.buildId)'
    
    steps:
    - script: docker build -f Dockerfile -t $(imageName) .
    displayName: 'docker build'
    
    azuredemo.base.yml
    version: '3'
    
    services:
    azuredemoweb:
    image: shitong/shitong:${IM_TAG-latest}
    networks:
    - appnet
    volumes:
    - /var/log:/var/log
    - /data/azure:/app/data
    redis:
    image: redis
    networks:
    - appnet
    ports:
    - 7379:6379
    volumes:
    - /data/redis:/data
    - /var/log:/var/log
    mongo:
    image: mongo
    volumes:
    - /data/mongodb/db:/data/db
    - /data/mongodb/backup:/data/backup
    - /var/log:/var/log
    networks:
    - appnet
    ports:
    - 27017:27017
    networks:
    appnet:

    这块的azuredemoweb节点下的image:shitong/shitong:${IM_TAG-latest}

    shitong/shitong就是我们第一步所建的hub.docker.com上的镜像文件库

    azuredemo.Development.yml

    version: '3'
    
    services:
    azuredemoweb:
    environment:
    - ASPNETCORE_ENVIRONMENT=Development
    ports:
    - 8080:80

     项目结构

     

    3.准备Azure DevOps帐号 用来托管代码,使用pipeline自动打包docker镜像

    https://dev.azure.com/

      

    把我们第二步准备的项目push到Azure DevOps


    该准备的都准备好了
    接下来就是重点了

     

     

     

    之后就会变成这样

     

    下面会有四个步骤:


    (1).还原nuget等依赖包 发布项目

    (2).打包成docker镜像

     

    (3).推送docker镜像到docker hub

     

    (4).服务器pull docker镜像 远程部署 运行项目

     

    cd /data/deploy/ && export IM_TAG=azuredemo_$(Build.BuildId)  && docker pull shitong/shitong:${IM_TAG} && docker-compose -f azuredemo.base.yml -f azuredemo.Development.yml config > docker-stack.yml && docker stack deploy --with-registry-auth -c docker-stack.yml myapp

     

     最后保存

    4.远程服务器

    首先要在远程服务器安装docker
    具体可以参考官网
    https://docs.docker.com/install/linux/docker-ce/ubuntu/
    这里安利一个教我docker的大佬的博客,可以查看/学习下基本的命令
    https://www.52hhx.com/index/articleDetail/73
    腾讯云的上机实验
    https://cloud.tencent.com/developer/labs/search?keyword=docker

    创建文件夹和azuredemo.base.yml,azuredemo.Develoment.yml

    内容直接拷贝第一步项目里的
    之后再把azuredemo.base.yml里的一些路径创建出来

     

    最后在Azure DevOps测试

  • 相关阅读:
    采用重写tostring方法使ComboBox显示对象属性
    JavaScript中正则表达式test()、exec()、match() 方法
    高级软件工程实践总结作业
    用户使用调查报告
    Beta阶段置顶集合
    Beta冲刺阶段总结随笔
    Beta冲刺Day7
    Beta冲刺Day6
    Beta冲刺Day5
    Beta冲刺Day4
  • 原文地址:https://www.cnblogs.com/shitong/p/10070393.html
Copyright © 2020-2023  润新知