00:00
好,前面呢,通过流水线的前两步,先把我们所有的代码拉取过来,并且呢,把代码也都已经clean pack给你打包了。那接下来我们整个代码呢,要部署到K8S集群上,那肯定要为每一个微服务产生镜像,所以我们接下来呢,就来编写第三步流水线的第三步就是构建镜像,来点击编辑流水线,来选中第三步,第三步呢来给它起一个中文名。我们就叫构建镜像。啊,这个构建镜像呢,我它呢在这儿有一些默认的步骤,这个默认步骤啊,我们可以来参考一下吧,这个默认步骤呢,先是在这儿有打包,打包其实我们之前早都已经打好了,把这个删除,而且呢,它在这指定容器得了,我们把它全部删除,我们自己来在这儿添加编辑构像,来编辑这个构建镜像,我们点击一个添加步骤。指定容器,因为我们这个呢,现在要打包镜像,所以这个容器啊,只要能运行docker命令就行了,所以这四个东西都行,而我们现在呢,都是Java项目,所以我们优先选择使用me,万一在打包镜像期间又要用到me的一些命令。
01:12
好,容器呢,我来指定好了,接下来我来添加步骤,步骤的第一步。来想啊,我这个第一步呢,我先啥事都不做,我先来验证一下我们当前这个项目里边的东西对不对,点击一个确认,点击一个保存。我呢,相当于运运行了一个LS命令,就是验证一下我们这个项目里边的东西对不对。最好验证一下什么,因为我们上一步呢,已经打好包了,看一下某一个微服务里边有没有打好的这个包,所以我最好LS某一个微服务名,我可以把这个停一下。因为这个光LS呢意义不大,我们在这儿编辑流水线。LS的时候呢,我让他看一下。这个微服务。比如就叫这个为辅吧。
02:01
因为所有的项目呢,拉过来,我们之前看过他的LS,我把这个名怎么复制不来呢。Controy。CTRLC确定一下。CTRLV啊,我们呢,之前看过,在前一步的时候也LS过,我们会把所有的这个拉取来的代码的目录里边的内容都展示出来,所以我就来看一下这个里边的东西。有有没有我们。呃,相当于打好包的内容,点击保存。点击运行。好,我们来看第八步。稍等一下。因为如果上一步打包成功的话,每一个微服务像我这儿一样会生成target target里边是不是有我们微服务的炸包,所以。看一下啊。查看日志。第一步是拉取代码,第二步项目编译应该也挺快的,因为之前呢都编译过。
03:01
你等一下,估计就是个三四十秒就完成了。编译完了以后呢,我们先来确认一下。要打包镜像之前东西呢,是对的LS,我看到ls hospital这个manage,我们的这个东西里边,它有一个是不是叫target,而且呢,是不是有doer fair。所以呢,我们现在的这个打包镜像啊,其实就是每一个微服务,根据它的这个刀客费啊,是不是打包镜像就行了。这个docker费呢,我把这个我们LS的东西呢放到这儿。所以呢,我接下来我的这个命令,我就可以这么来写。把以前的这个停掉。来到流水线,编辑流水线,我们的中间这一步,LS我已经确定在这儿是不是有东西了,然后我们就可以来构建一个镜像,但是大家会发现啊。接下来我的这个微服务,众多hospital manager是不是也要构建镜像,这个也要构建镜像,Service下边的所有人是不是都要构建镜像,所以呢,既然有非常多的人都要构建形镜像,我可以这么来做,在这呢,可以有一个叫添加并行阶段。
04:17
也就是说我在这一个并行阶段,两个并行阶段,三个并行阶段,四个并行阶段,我说上一步只要包打好了,然后呢,接下来让他们就并发构建镜像,每一个微服务构建自己的镜像,当然这个并行阶段呢,我先删掉。我们先把一个跑通,然后剩下的必经阶段。这能不能删掉呀。在这选中点击删除,选中一个并行阶段点击删除,选中一个并行阶段点击删除,选中一个并行阶段点击删除,好,我们先把一个跑通。这一个呢,我们之前已经确认没问题了,然后我点击添加步骤,我点击she,我们要运行命令,运行啥命令呢。
05:00
我们现在呢,要打包镜像,要这么来做,我们会看到hospital manager,这是我们的第一个为为服务。而我们这个微服务呢,你必须。我们运行了这个命令ls hospital ah,相当于你必须进这个里边,你才能看到这个为服务,所以我打包镜像的命令呢,应该是这么来写的。首先打包镜像是docker build。Build。然后呢,杠T。相当于我给镜像呢起一个名,这个名呢,我就叫hospital manage吧,医院管理系统。当然这个名写好了以后呢,接下来杠T-F,我们使用哪个文件来进行打包,是使用hospital。Manage。里边的我们是不是有一个docker费,所以呢,我们是用它的这个文件来进行打包的。而且呢,我们的工作目录是什么,所以我们要传入工作目录。
06:00
工作目录呢,就是进这个微服务里边,所以我再来写一个hospital manager,这是我们的一个打包命令,相当于我进到这个微服务里边,让他呢根据他的这个刀客费,然后呢给我们来进行打包,打包的这个镜像名啊,我们构建镜像,镜像名呢叫它那镜像名呢,最好加个版本,就V1啦V2啦,我们现在呢不加版本,默认就是latest构建一个最新镜像,好我就写它吧。我先来看第一个镜像能不能构建成功,点击确定。点击确认,点击保存,如果他能成功的话,那接下来再有必要运行剩下的人。好,我们来等这个流水线运行到那一步。稍等一下。好,流水线开始了。第一步,拉取代码。这个会很快。第二步项目编译,这个也会很快。第三步接下来呢,我们要。
07:05
在这个微服务。相当于构建微服务的镜像。啊,构建镜像,诶我们发现呢,我的这个命令运行成功了呀,Docker build,杠T,我们想要呢,构建出这么一个镜像,然后呢,杠F,我们使用的这个文件,然后在它这个工作目录下构建镜像,好,我们来看整个镜像就像构建的第一步向下在基础镜像已经OK了,然后呢,构建镜像来往下。在这儿来看有没有运行成功啊刷新。在这第五步,第五步呢,我们要copy target下的星点炸,我们相当于呢,要复制这个target下边的星点炸这个炸包,但是呢,他说no fair,就说我们没有这个原文件给指定,为啥没有呢?因为我们之前的工作目录是在这个目录下。
08:07
在这个目录下,那在这个目录下的话呢,这个目录下一定会有target呀,所以我们在这要做之前。来,我们在这儿呢,确认一下流水线,来编辑流水线。因为我们在这呢要打包,所以打包之前呢,我在这添加一个步骤是来打印一下LS它的这个下边。Hospital。Manager。下边的target,我来确认一下target里边有没有我们期望的这个内容,点击确定。我把这个脚本呢,应该放到上边。合适啊。所以。这个是要我们打包镜像的命令的这个脚本。删掉,我们呢,先上一步,先来检查target里边有没有东西。
09:01
有的话呢,再来做这个事儿。传入点杠。传入呢,Host manager下的这个所有。让他呢,在这个目录下进行工作。点击确认。你先来运行流水线。随便先在流水线运行期间,我先来确认一下。我们的这个hospital manager下边的target应该要有星点炸包,没有炸包的话它就会报错。他就报错呢,说我们这个原文件不存在,就来等一下。项目呢,在这儿编译。等一下好,开始构建镜像,我们看到呢,Target下边来确认一下。我们的这个hospital manager target下边呢,Classes也好,什么gene也好,什么archer也好,诶确实是不是没有我们的炸包,所以呢,我们上一步的打包命令,那可能就有问题。
10:05
所以呢,回归到这,这就是我们一旦出了流水线出问题,我们就要一个一个检查来到这上一步呢,我们的打包命令是MVN可令package-D,什么TSK。然后呢,打完包以后我们来确认一下。打完包以后呢,我们让他。因为整个项目打完包以后,每一个里边呢,肯定要生成target,所以呢,我们随便列举一下某一个微服务里边的target。它下边的他给里边的内容。点击确定。点击确认,点击保存。来看一下效果运行。那稍等一下整个流水线。来看一下为什么?我们在构建docker镜像的时候,没有的了呢。
11:00
就要看上一步。镜像打包。不是镜像打包,是我们这个项目编译,编译的时候呢,他给我们有没有编进去东西,首先运行的命令是对的,MVN可令package,然后呢,接下来他要诶他要给我们打包这些项目,每一个项目呢,来确定一下。他要不要生成什么target?看他整个目录。这是src目录。Build。我们来看项目编译吧,我来刷一下。前边呢编译我来看下边,下边呢我们会看到hospital manager target确实呢没生成东西。那为什么它这个命令运行完了没生成东西呢?看一下啊。1.0,什么snapshot。哎,我们发现好像在我们这也没有生成东西,就是。
12:00
我们在这儿。MVN可令。Package要是没生成东西呢,那就是我们这个微服务有问题,下边把微服务改一下没。K。跳过测试。让他请你打包。我们要确认这个hospital的这个文件里边有没有东西啊。啊,整个呢,这个运行成功hospital manager,来看一下hospital manager target里边呢,确实没有包,为啥没有呢?来看一下它的po文件。我们这个Java的这个工程po文件spring boot,有spring boot依赖没问题,如果我们项目要打包,就得有打包工具。
13:02
这个打包工具,它这个final name怎么生成的是这个玩意儿呢?所以呢,我们这个项目名呢,我把这改一下,这是我们STEMBOO的打包工具,好现在就有了,重新来一遍。MVN可定盘值,稍等一下。这块呢,运行成功,我们在这确认一下哦,现在这个hospital里边呢,已经有了这个炸包了,以前没有炸包呢,是因为它这个文件名什么还有杠,每一个这个杠呢,被当成一个文件夹了,所以它这个炸包呢,可能藏在某一个文件夹下边了。而我现在呢,整个炸包必须在target的下边。好,那我们的这个呢,就改好了,改好以后。我重新呢,把这个代码推送上去。这个叫修改。修改我们这个泡沫打包。打包插件。我们这个Mar呢,让Mar保证能能给我们打包,当然这个推送的时候呢,我先不推送这个金费。
14:03
金克斯菲尔,我们后来有用。这个金呢,我留在这儿是来做对比的。然后呢,现在我们来重新来进行构建,刚才呢有问题了。有问题呢,不是我们流水线的问题是。Java代码是我们这个Java项目的问题,那我现在来重新运行。随便说一个东西。好,等待它整个运行。我们看他能不能帮我们来打包成导客镜像,如果能的话呢,接下来剩下的每一个微服务都这么来做。而且呢,让它进行,我们称为叫并发构建。啊,项目呢,正在编译,稍等。
15:04
编译完了以后呢,我们一定要确认在这儿。现在是不是有这个扎包,所以呢,接下来构建镜像成功了,我们会看到doer build,我们hospital的这个镜像就构建成功了,成功了success t t,所以我们这个hospital镜像构建成功了以后呢,其实我们这只是构建了几个hospital镜像,而剩下的这个所有人的镜像是不是都要构建,那么下一节课呢,再来优化我们构建镜像的过程。
我来说两句