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

创建docker远程镜像库

2.新建一个mvc的项目

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

FROM dukecheng/aspnetcore:aspnetcore-runtime-2.2.
ARG source
WORKDIR /app
EXPOSE
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.-preview3- 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: '' 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:
- :
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:
- :
networks:
appnet:

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

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

azuredemo.Development.yml

version: ''

services:
azuredemoweb:
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- :

项目结构

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测试

微软Azure DevOps自动化部署的更多相关文章

  1. 微软 Azure DevOps Server 2019 Update 1 (TFS 2019.1)

    1.概述 微软在2019年5月发布Azure DevOps Server 2019后不到2个月的时间里,就快速准备好了第一个升级包(2019 Update 1),并计划在几周后发布正式版本.也许你还没 ...

  2. 微软Azure DevOps 使用docker 持续集成 dotnet

    azure 环境设置 登录azure 地址 https://dev.azure.com/ 使用微软账号就可以进行登录. 点击右上角新建项目 项目信息,尽量用小写 创建项目 修改默认的dockerfil ...

  3. Azure DevOps Pipelines部署.Net Core 应用到Kubernetes

    一.    先决条件 1.Azure Repos Git/Git和项目上传 把本地的Net Core项目上传至Azure Repos Git/Git 2.Docker Registry Service ...

  4. Azure Terraform(七)利用Azure DevOps 实现自动化部署基础资源(补充)

    一,引言 之前一篇文章有讲解到利用 利用Azure DevOps 实现自动化部署基础资源,当时 TF 代码没有针对 Azure 各个资源的封装,所有的资源代码全部写在一个 main.tf 文件中.然后 ...

  5. Azure DevOps(二)利用Azure DevOps Pipeline 构建基础设施资源

    一,引言 上一篇文章记录了利用 Azure DevOps 跨云进行构建 Docker images,并且将构建好的 Docker Images 推送到 AWS 的 ECR 中.今天我们继续讲解 Azu ...

  6. 如何利用Azure DevOps快速实现自动化构建、测试、打包及部署

    前两天有朋友问我,微软的Azure好用吗,适不适合国人的使用习惯,我就跟他讲了下,Azue很好用,这也是为什么微软云营收一直涨涨涨的原因,基本可以再1个小时内实现自动化构建.打包以及部署到Azure服 ...

  7. Azure Terraform(九)GitHub Actions 实现 Infra 资源的自动化部署

    思路浅析 使用 Terraform Code 部署 Azure 基础设施资源是特别受欢迎的,我曾经有写文章分享过利用 Azure DevOps 自动部署 Terraform Code 所描述的 Azu ...

  8. Azure DevOps Server 2019 (TFS)安装教程

    概述 Azure DevOps Server 2019 (之前的名称为TFS),作为微软Azure DevOps 的企业私有(on-premises)服务器,是一个为开发团队提供软件协作开发管理的服务 ...

  9. Azure Devops: COPY failed: stat /var/lib/docker/tmp/docker-builder268095359/xxxxxxx.csproj no such file or directory

    在Azure Devops中部署docker镜像时,  出现COPY failed: stat /var/lib/docker/tmp/docker-builder268095359/xxxxxxx. ...

随机推荐

  1. postgresql----INSERT

    INSERT即向表中写入数据,每条INSERT语句可以写入一条数据,也可以写入多条数据.另外还可以将其他的查询结果集用在INSERT中,将查询结果写入表中. 测试表 test)); CREATE TA ...

  2. CodeForces 651 C Watchmen

    C. Watchmen time limit per test 3 seconds memory limit per test 256 megabytes input standard input o ...

  3. 一个不需要Log4Net的写日志的简单方法

    有些项目写日志时会选择大名鼎鼎的Log4Net.而在我们使用它时,总会出现一些诸如版本不匹配而造成的写日志失败的情况,还要改web.config,还要改AssemblyInfo.而且,它的失败,并不是 ...

  4. ValueError: Only call `sparse_softmax_cross_entropy_with_logits` with named a

    第五章中完整的训练MNIST数据的神经网络模型的程序代码中,直接运行程序的话会遇到以下的错误. 把下面的这行代码 # 计算交叉熵及其平均值 cross_entropy = tf.nn.sparse_s ...

  5. 使用jquery的$.post()时浏览器崩溃

    代码: function verifyStepOne() { var phoneNumber = $("#phoneNumber"); var username = $(" ...

  6. http和socket之长连接和短连接区别

    TCP/IP TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. 在传输层中有TCP协议与UDP协议. 在应 ...

  7. 符合语言习惯的 Python 优雅编程技巧

    Python最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净.整洁.一目了然.要写出 Pythonic(优雅的.地道的.整洁的)代码,需要多看多学大牛们写的代码,github 上有很多非常优秀 ...

  8. 【Python】接口自动化测试-Fidder的使用(未完待续……)

    一.fidder一些一定需要掌握的知识. 1.工具简介 2.清屏操作(1中提到了,这里再着重说明下): 3.get和post请求参数相关: 4.会话框(Fidder左侧区域内容解析): 5.Reque ...

  9. Atom预览markdown插件Markdown Preview Enhanced

    atom 上目前最强的 markdown 插件Markdown Preview Enhanced 是一款为 ATOM 编辑器编写的超级强大的 Markdown 插件.这款插件意在让你拥有飘逸的 Mar ...

  10. mybatis 中jdbctype和javatype的对应关系

    1:mybatis 中jdbctype和javatype的对应关系 JDBC Type Java Type CHAR String VARCHAR String LONGVARCHAR String ...