上一篇文章我们完成了最简单的传统部署:上传应用到服务器上使用守护进程进行应用的部署。

本篇文章我们开始研究容器化和流水线的协作。

在开始操作之前,我们首先需要准备一下我们的dockerfile,这里我们依然还是使用前几篇文章使用的项目,贴一下文件内容。

既然我们是使用的微软的azure,所以我也就直接用了azure维护的jdk:zulu,我自己电脑上的jdk也是用的这个,因为我是M1芯片的mac,最一开始的时候官方并没有ARM架构的JDK

但是微软第一时间发行了zulu的ARM版本,我就一直用到了现在。

FROM  azul/zulu-openjdk-debian:8
COPY demo-app.jar /demo-app.jar
ENV JAVA_TOOL_OPTIONS -Dfile.encoding=UTF8 -Duser.language=zh -Duser.region=zh_CN -Duser.country=zh_CN
ENTRYPOINT exec java -jar demo-app.jar

接下来我们来创建一条新的release 流水线,这里有个深坑,就是我们在选择agent的时候一定要选对了,选linux的发行版,我最一开始没注意这个问题

导致后执行docker build 的时候一直提示我平台不对,结果我一看执行的是docker.exe o(╥﹏╥)o

首选创建agent,上面选择azure pipelines,下面选择ubantu

接下来创建两个Task,第一个task用来整理一下文件目录,第二个task用来执行容器的编译。

首先创建第一个task,我们需要把dockerfile和我们的应用放在同一目录下。

我们在agent下创建一个bash任务,选择在线脚本。

这里我贴一下脚本的内容,主要就是从流水线编译好的制品中,提取出Dockerfile和我们的应用程序放在统一目录下。

cd _my-devops
mkdir finaldir
pwd
ls
cd webhook
ls
mv demo-app.jar ../finaldir
mv classes/Dockerfile ../finaldir
cd ../finaldir
ls
pwd

接下来我们创建第二个task,用来执行docker build

我们在agent下添加一个docker执行步骤,在右侧搜索docker,进行添加

添加完成之后,这里有两部分需要我们填,Container Repository我们暂时先留空,因为我手头没有合适的仓库,我们本篇文章的重点放在镜像的编译工作上,

我们在commands配置项里输入dockerfile的路径,和命令的执行路径,这里我把路径填写为了上面我整理好的finaldir中去,如果你有需要指定的编译参数可以

写到Arguments中去,这里还有一个tag,用来指定我们镜像的版本,$(Build.BuildId)环境变量会获取我们本次流水线的编译号,例如我这用的是test-$(Build.BuildId)

那么到时候就会生成类似:test-3的一个tag打在镜像上,让我们区分镜像结果。

按照要求填完之后,我们启动一下这个流水线看一下执行的效果。

从bash的执行结果中,我们可以看到,我们已经成功的整理好了文件目录,把应用程序和dockerfile放在了同一个文件夹下。

我们再来看一下dockerbuild的结果,azure成功的编译出了我们的镜像

到这里我们就成功的使用azure的流水线编译出了第一个docker的镜像,说实话踩了很多坑,尤其是一开始没有选择对agent的类型,卡了半天没意识到这个问题,我一直以为是我dockerfile中FROM的基础镜像有问题,还去翻了半天源码,看着源码里那个debain发行版本怀疑了半天人生,最后才意识到可能是agent的问题o(╥﹏╥)o

下一篇我们会研究如何通过azure打通一个公网的docker仓库,把我们编译好的镜像推送到仓库去。

Azure DevOps (八) 通过流水线编译Docker镜像的更多相关文章

  1. Azure DevOps (十) 通过流水线完成Docker镜像的部署

    上一篇文章中,我们通过azure的流水线完成了镜像推送到镜像仓库中去,本篇文章我们继续开始完成下一步,通过流水线把镜像从仓库拉取到任意一台公网的服务器上去, 完成镜像部署的闭环. 首先我们需要先准备一 ...

  2. Azure DevOps (九) 通过流水线推送镜像到Registry

    上一篇文章我们研究了如何通过流水线编译出一个docker的镜像,本篇我们来研究一下,如何把编译好的镜像推送到镜像仓库去. 平时如果我们是单机部署,我们的docker本身就装在部署的机器上,我们在本机直 ...

  3. 使用Jenkins pipeline流水线构建docker镜像和发布

    新建一个pipeline job 选择Pipeline任务,然后进入配置页面. 对于Pipeline, Definition选择 "Pipeline script from SCM" ...

  4. Kubernetes master服务定制编译docker镜像

    前言 之前部署了Kubernetes 1.13.0,发现master服务的启动方式与1.10.4版本有所区别,kube-apiserver.kube-controller-manager和kube-s ...

  5. Devops(四):Docker 镜像管理

    参考 <Docker中上传镜像到docker hub中> <Docker 镜像管理> <通过容器提交镜像(docker commit)以及推送镜像(docker push ...

  6. 03.pipeline实现项目自动编译docker镜像自动打包

    https://jenkins.io/zh/doc/book/pipeline/ 官方教程,可以中文.Jenkinsfile就是把pipeline内容保存到文件,然后提交到svn等版本控制库中.安装b ...

  7. k8s Gitlab CI/CD 之自动编译Docker镜像并推送到指定的Registry

    环境介绍: 说明 节点 ip 系统 Gitlab Server git.ds.com 10.0.1.179 CentOS 7.5.1804 Gitlab Runner   10.0.1.178 Cen ...

  8. 在Azure DevOps Server (TFS 2019) 流水线传递参数

    变量概述 在Azure DevOps Server的流水线中,变量是衔接不同任务和不通代理之间的桥梁,它可以使相对松散.各自独立的任务之间相关影响并共享数据.在流水线中使用变量,可以在各任务之间相互调 ...

  9. 【OF框架】在Azure DevOps中配置项目持续集成CI服务,推送镜像到Azure容器注册表

    准备工作 开通Azure账号,具有开通服务权限,关键是里面要有钱. 开通Azure DevOps,能够创建组织和项目. 具备一定的DevOps知识,了解CICD概念.Docker基本操作. 一.创建& ...

随机推荐

  1. vue--axios异步请求及文件目录结构分析(个人记录)

    我这里使用axios进行异步加载 axios是一个库,并不是vue中的第三方插件,使用时不能通过Vue.use()安装插件,需要在原型上进行绑定,即直接在main.js中使用Vue.prototype ...

  2. Spring Cloud Alibaba 2021.0.1.0 发布:版本号再也不迷糊了

    大家好,DD又来了! 3月9日,Spring官方博客发文:Spring Cloud Alibaba 2021.0.1.0发布了. 前段时间DD还在微信群里看到小伙伴吐槽Spring Cloud Ali ...

  3. 国产化之银河麒麟安装.NetCore-包管理器方式

    背景 某个项目需要实现基础软件全部国产化,其中操作系统指定银河麒麟,数据库使用达梦V8,CPU平台的范围包括x64.龙芯.飞腾.鲲鹏等. 考虑到这些基础产品对.NETCore的支持,最终选择了3.1版 ...

  4. 矩池云里查看cuda版本

    可以用下面的命令查看 cat /usr/local/cuda/version.txt 如果想用nvcc来查看可以用下面的命令 nvcc -V 如果环境内没有nvcc可以安装一下,教程是矩池云上如何安装 ...

  5. SQL从零到迅速精通【数据更新】

    1.[导入表]在两个表的格式一样的情况下,将一个表的数据导入另外一个表. person_old表中现在有两条记录.接下来将person_old表中所有的记录插入到person表中,语句如下: INSE ...

  6. MySQL 中如何归档数据

    归档,在 MySQL 中,是一个相对高频的操作. 它通常涉及以下两个动作: 迁移.将数据从业务实例迁移到归档实例. 删除.从业务实例中删除已迁移的数据. 在处理类似需求时,都是开发童鞋提单给 DBA, ...

  7. 禁用 Windows 共享服务,释放 445 端口

    禁用 Windows 共享服务,释放 445 端口 转载自:https://blog.csdn.net/liu857279611/article/details/71786068   在 Window ...

  8. Excel文件导入SQL Server数据库

    Excel表格的使用可谓是非常广泛,博主也简单百度了一下Excel的发展. 发展历程: 1982年 Microsoft推出了它的第一款电子制表软件-Multiplan,并在CP/M系统上大 Excel ...

  9. 数据库常用的sql语句大全--sql

    前言 本片博客使用mysql数据库进行数据操作,使用Navicat for mysql 这个IDE进行可视化操作.每个SQL语句都是亲身实验验证的,并且经过自己的思考的.能够保证sql语句的可运行性. ...

  10. Sobel算子 Scharr算子 Laplacian算子

    图像梯度处理 Sobel算子 水平方向: 对于线条A和线条B,右侧像素值与左侧像素值的差值不为零,因此是边界 上下像素值差值为0,左右素值的差值不为零,分布为正负, 离的近的为2,离的远的为1 P5= ...