微软Azure DevOps自动化部署
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镜像
把我们第二步准备的项目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自动化部署的更多相关文章
- 微软 Azure DevOps Server 2019 Update 1 (TFS 2019.1)
1.概述 微软在2019年5月发布Azure DevOps Server 2019后不到2个月的时间里,就快速准备好了第一个升级包(2019 Update 1),并计划在几周后发布正式版本.也许你还没 ...
- 微软Azure DevOps 使用docker 持续集成 dotnet
azure 环境设置 登录azure 地址 https://dev.azure.com/ 使用微软账号就可以进行登录. 点击右上角新建项目 项目信息,尽量用小写 创建项目 修改默认的dockerfil ...
- Azure DevOps Pipelines部署.Net Core 应用到Kubernetes
一. 先决条件 1.Azure Repos Git/Git和项目上传 把本地的Net Core项目上传至Azure Repos Git/Git 2.Docker Registry Service ...
- Azure Terraform(七)利用Azure DevOps 实现自动化部署基础资源(补充)
一,引言 之前一篇文章有讲解到利用 利用Azure DevOps 实现自动化部署基础资源,当时 TF 代码没有针对 Azure 各个资源的封装,所有的资源代码全部写在一个 main.tf 文件中.然后 ...
- Azure DevOps(二)利用Azure DevOps Pipeline 构建基础设施资源
一,引言 上一篇文章记录了利用 Azure DevOps 跨云进行构建 Docker images,并且将构建好的 Docker Images 推送到 AWS 的 ECR 中.今天我们继续讲解 Azu ...
- 如何利用Azure DevOps快速实现自动化构建、测试、打包及部署
前两天有朋友问我,微软的Azure好用吗,适不适合国人的使用习惯,我就跟他讲了下,Azue很好用,这也是为什么微软云营收一直涨涨涨的原因,基本可以再1个小时内实现自动化构建.打包以及部署到Azure服 ...
- Azure Terraform(九)GitHub Actions 实现 Infra 资源的自动化部署
思路浅析 使用 Terraform Code 部署 Azure 基础设施资源是特别受欢迎的,我曾经有写文章分享过利用 Azure DevOps 自动部署 Terraform Code 所描述的 Azu ...
- Azure DevOps Server 2019 (TFS)安装教程
概述 Azure DevOps Server 2019 (之前的名称为TFS),作为微软Azure DevOps 的企业私有(on-premises)服务器,是一个为开发团队提供软件协作开发管理的服务 ...
- 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. ...
随机推荐
- postgresql----INSERT
INSERT即向表中写入数据,每条INSERT语句可以写入一条数据,也可以写入多条数据.另外还可以将其他的查询结果集用在INSERT中,将查询结果写入表中. 测试表 test)); CREATE TA ...
- CodeForces 651 C Watchmen
C. Watchmen time limit per test 3 seconds memory limit per test 256 megabytes input standard input o ...
- 一个不需要Log4Net的写日志的简单方法
有些项目写日志时会选择大名鼎鼎的Log4Net.而在我们使用它时,总会出现一些诸如版本不匹配而造成的写日志失败的情况,还要改web.config,还要改AssemblyInfo.而且,它的失败,并不是 ...
- ValueError: Only call `sparse_softmax_cross_entropy_with_logits` with named a
第五章中完整的训练MNIST数据的神经网络模型的程序代码中,直接运行程序的话会遇到以下的错误. 把下面的这行代码 # 计算交叉熵及其平均值 cross_entropy = tf.nn.sparse_s ...
- 使用jquery的$.post()时浏览器崩溃
代码: function verifyStepOne() { var phoneNumber = $("#phoneNumber"); var username = $(" ...
- http和socket之长连接和短连接区别
TCP/IP TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. 在传输层中有TCP协议与UDP协议. 在应 ...
- 符合语言习惯的 Python 优雅编程技巧
Python最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净.整洁.一目了然.要写出 Pythonic(优雅的.地道的.整洁的)代码,需要多看多学大牛们写的代码,github 上有很多非常优秀 ...
- 【Python】接口自动化测试-Fidder的使用(未完待续……)
一.fidder一些一定需要掌握的知识. 1.工具简介 2.清屏操作(1中提到了,这里再着重说明下): 3.get和post请求参数相关: 4.会话框(Fidder左侧区域内容解析): 5.Reque ...
- Atom预览markdown插件Markdown Preview Enhanced
atom 上目前最强的 markdown 插件Markdown Preview Enhanced 是一款为 ATOM 编辑器编写的超级强大的 Markdown 插件.这款插件意在让你拥有飘逸的 Mar ...
- mybatis 中jdbctype和javatype的对应关系
1:mybatis 中jdbctype和javatype的对应关系 JDBC Type Java Type CHAR String VARCHAR String LONGVARCHAR String ...