00:00
好,那前面呢,我给每一个项目它的这些配置文件都生成了一个它在我们生产环境下的配置文件,当然这些配置文件呢,仅针对于我们这些application压面和我们application properties以及我们的bottomtrap这个properties,在这些我们生成了这个生产环境的文件以后,那接下来我们就可以为每一个微服务让它呢打包成这个镜像,最终上传到doer HUB这个仓库里边,那这个打包镜像呢,我们需要来依赖一个叫docker fair,这个docker fair我们之前来用人人开源的这个逆向工程的时候,其实我们看到它的这个里边呢,有一个dock费尔,Do费尔就是来指定我们把这个微服务该如何打包成一个dock镜像,比们来解析一下它的这句话,这句话的from java8意思就是我们的这个微服务依赖的基础镜像是JAVA8,然后呢,EXEXP8080,那就是我们的这个微服务。
01:00
它的这个一启动以后,我们这个炸包一启动以后,它暴露的是8080端口,我们可以给容器暴露一个8080端口,然后呢,我们这个容器可以把它8086端口对外再来做一个暴露,这是我们的ex exps以及value是我们挂载的目录文些工作数据,我们可以给它产生到我们这个T这个目录文件夹下,另外还有一个叫ADDDD呢是and,那就大家就认为是我们Linux里边的命令CP,就是复制,复制什么呢?它会最终把这个人人fast,然后我们一编译,编译打包成一个炸包以后,它把这个炸包复制到杠杠,那就是我们当前根目录,当前根目录我们现在都知道,其实每一个刀口容器它呢都是一个非常小迷你版的Linux,所以这个根目录啊,其实就是Linux的这个更杠目录,当然Linux里边还有其他各种目录,比如root home等一大堆,那么现在呢,就是把我们的这个。
02:00
相当于我们用me package,我们打的这个包,然后呢,放到歌目录,然后给它起名叫APP点炸,然后又一句话让半杠c touch APP点炸,相当于我们又来创建一个APP点炸,其实我们看到根目录已经有这个APP炸了,我们还touch创建一个,创建的这个原因其实就是我们打的这个炸包,可能呢,时间比较老一点,然后复制过来,改完名以后能给他touch,相当于我再来创建一个这个其实你如果已经存在的话,这个就不会创建,但是呢,它会修改一下我们这个炸包的这些修改时间,创建时间,把这个时间一修改,我们如果。有机会后来有我们的这个场景,我们要进容器里边看我们这个炸包什么时候做过来的,我们也能看到这个时间,所以这一行命令呢,其实可加可不加,我们加上吧,然后还有这个entry port entry port,那就是我们这个容器,我们现在呢,打包成一个镜像,镜像呢,我们如果使用docker把这个镜像拉取下来,我们要刀开run,然后呢,根据这个镜像要启动一个容器,容器一启动,默认运行的命令是什么?诶,默认运行的命令就是JA杠炸APP点炸,先用我们默认运行这个命令,所以呢,这是我们一个do fair,那我们也可以来测试一下这个行不行,比如我现在把我们的这个人人fast,我来做一个打包,这个人人fast我来到他的life circle里边,好,我们在这来直接输me命令,这有个MN来选中我们的这个人人fast这个目录,然后呢,来运行一个命令叫clean package,相当先清理一下,把它原来的target目录清理一下,然后呢再pack。
03:40
打个包啊,在杠D,杠D呢就是我们让它在这设置了一个参数,就是跳过me的这个测试啊,跳过测试以后,好,我现在把这一块其他的删掉,那跳过测试我点一个执行走,那我们的这个人声fast,我们就会打一个炸包啊,这个炸包在哪放着呢,我们来稍等看一下,那这一块给我们这个打包报错,说呢不能解析我们这个依赖,依赖呢,说我们这个人人fast,他呢还依赖一个古丽麦尔common啊,那就对了,我们的这个鼓励麦尔common是一个基础包,它还依赖着,所以我们想要打包呢,我们说me再来运行打包编译等这些命令之前,它依赖的这些东西都必须要么在远程仓库,要么在本地仓库,而我们现在呢,写的是代码,这些东西呢,我们每一个服务都没有在仓库里边,所以呢,我之前还做了一件事情,我现在呢,在古力妙他的这个总po文件里边,把我们现在以后想要用到的,我们整个微服务的提。
04:41
合我们全部呢聚合进来,聚合进来以后呢,我现在统一的在我们的这个古力ma里边,我来运行一个命令,就是style,把它们呢安装到仓库里边,当然现在的安装是到本地仓库,安装到本地仓库以后呢,我们给其他微服务打包,它就不会报错了,而且我们现在是一种聚合方式,它会自动解析我们这些依赖之间的关系,不会产生打包报错。好我就来到我们这个古力庙来运行一个memory命令,大家看好,那现在运行命令的这个层级是古力ma整个大目录,这个大目录下呢,有一个这个大po文件,然后我们运行clean,我呢不运行clean package,我现在运行clean in install,那们相当于安装,把它安装到仓库,并且呢,跳过测试,我们都没必要运行测试,我们点一个执行,那们先将每一个我们现在微辅导包我们都装到仓库,那装到仓库以后呢,我们的这个仓库就肯定有我们这个微服务的内容了,我把这个复制过来可以看一下。
05:38
我们的这个仓库地址ctrl c windows1,我来打开我们的这个仓库地址,然后呢,在我们的鼓mail里边,只要我们装了仓库里边一个东西,我们的这个鼓立mail common,比如它的这一块版本,它相关的这个炸包,诶我们就装到仓库里边了,其他所有的微服务都一样,你点击古立mail,其他所有的微服务呢,最终都会装到仓库,好我们就来稍等,这一块呢,我们让他装仓库,装完好,那现在微服务呢,安装到仓库里边了,然后呢,我再想要给其他任何服务打包,那都能打了,包括我们只要安装仓库,你想要安装到仓库,肯定得先打好炸包,炸包,再把炸包放到仓库里边,所以我这儿呢,直接会有一个炸包,如果我们想要拿docker把这个炸包做成镜像,怎么做呢?诶,我可以把这个炸包复制来,以及他的这个docker fair我全复制来,比如我CTRLC我复制到外边,然后呢,我把它上传给我们的这个虚拟机,我们来给大家演示一下,比如我们现在就在虚拟机的OPT目录下,我make一个dar,比如我们现在。
06:38
就叫我们的admin,现当于我们的后台管理工程,把CD到admin里边,把我们打好的炸包和do fair尔文件,我们全部呢放到这个admin文件夹下点进来,好,那现在把这两个呢上传上来。我们来到这个din文件夹,我们把这两个上传过来,这是din文件夹,走我们来上传上来,那上传上来以后呢,接下来我们就会看到在我们的这个的命文件夹里边,LS就会有一个docker fair,还有一个人人fast,相当于我们生产的这个炸包就已经好了,现在我们想要把它打包,那全部呢在刀ER fair里边,我们都已经写好这个打包规则了,首先我们的基础镜像是JAVA8,然后暴露8080端口工作目录,它这个零食券挂载都是在这个推下,以及我们把这个人人这个fast炸包,然后呢,我复制到我们这个容器里边的根目录下的APP点炸以后呢,这个启动运行的是Java杠炸APP点这好,我们现在这个镜像的描述文件,我们现在是写好了,我们想要把它打包,只需要呢,运行这么一个命令,叫build。
07:44
就是docker build,我们只要在我们的目标机里边装了docker,来写一个docker build,然后呢,杠F就是来指定一个配置文件,你是想用哪个配置规则,我们刚才写了一个docker fair,这种规则相当于我来指定一个配置文件docker fair,然后呢,你想打成什么样的镜像,你呢,接下来需要使用杠T,杠T就是探给镜像打一个标签的意思,好,我们打成什么样的镜像,我们可以把我们的整个镜像来写过来,CTRLC,把这一块CTRLC我复制过来,这块的镜像名呢,我现在起的是一个完整规则doer IO,相当于我们是从do IO里边来的,叫雷锋羊cut,这是购物车,然后V。
08:27
0.1,比如我们现在就叫ad命这个管理台V0.1,然后你要打包哪个东西,注意我们后边还有一个点点就代表跟我这个doer费同工作目录下边的这些资源,我要打包成这个镜像,所以我现在来回车一下,我们现在呢就会doer build运行,那运行呢,它就会分布给我们来完成这个事情,诶我们看到它的这个分布,From Java先从基础镜像里边,然后在EXEXP暴露端口,然后我们的卷挂载,以及把我们的人人fast这个包复制到根目录,这块全部都打完以后,这是我们容器启动要用的这个命令,我们使用我们的这个刀ER images走,我们就能看到雷锋羊的这个呃的命,我能看到这个炸包。
09:18
不是炸包,是我们的镜像,所以相当于我呢,我们现在就有了这么一个镜像,那有了这个镜像以后呢,你其实我们以后呢,就可以拿它直接启动一个容器了,比如我直接来docker run docker RA,杠D,我们以后台的方式运行来写一个杠杠name,我们给我们自己容器起一个名字,我们就叫哈我的密,然后呢,我们要暴露哪个端口,比如我杠P,我把外边的8080映射到我们容器的8080,我们在这写好以后,然后呢,我们要启动哪个镜像,我可以把这一块复制过来,好,我们在这儿来点一个粘贴它冒号,把它加上它的标签号V。1.0,所以只要我们有镜像,我们就可以来启动一个容器走,那么现在呢,这个容器就启动起来了,Doer PS我们来看一下,那么呢,就是这个雷福阳的M,如果我们想要进来也可以来进来,包括我们想要访问CUUL,我们来直接访问我们本机127.0.0.1,我们现在呢,暴露了一个端口8080,所以我们来访问8080,看它给我们能返回数据,但然这一块呢还没准备就绪,所以它这个连接呢出现问题,我们到开看一下,好,现在呢,我们直接进这个容器里边,来给大家看一下我们之前的这个规则,然后呢,我们这个docker ex e-it,我们来进这个容器里边,我们使用它的B半式,我们进来,那进来我们这个容器里边以后呢,我来LS给大家看一下,哎,我们发现呢,我们这个容器它里边呢,其实就有一个APP点炸没问题。
10:55
因为我们之前在打包镜像文件的时候,我们相当于描述了一个这个信息,把我们自己的这个炸包给你做成APP点炸,然后呢放到放到我们的这个根目录下杠,所以我们这儿有一个APP点炸,我们后台呢,其实运行的是它,而且我们还把这个PI这个呢让它挂载到外边了,只不过我们现在呢,这个tip里边,我们看其实都是运行时的一些数据,比如spring的log等等,这些所有的数据全部自己都是去了我们想要挂载的这个目录,那这个呢,我们就演示了,其实通过一个docker fair,我们可以将我们的这个应用在我们的这个机器里边,用docker的这个命令就能打包,那既然能打包,我们后来只要每一个项目都拥有一个do fair的话,那我们后来的整个流水线就好弄了,因为我们现在直接使用S,我们把我们所有的代码全部拉取进来。
11:55
以后,然后每一个里边呢,它又有它的docker fair,那詹S呢,直接运行我们的docker build命令,按照我们每一个微服务的docker fair把它打包成这个镜像,但打包成镜像以后呢,你还应该把这个推送到远程仓库,这个推送呢也简单,你首先登录远程仓库docker Logan-U,用你的docker help的账号密码一登录,然后docker push,把你刚才打的这个镜像往上一推就完事了。所以我们整个金克S呢,只要你有这个刀客费,我就可以给你推送上去,所以我们接下来要做的更多的事情就是每一个微服务,我们在它的这个下边,就是在它的公目录下边,我们必须呢创建一个文件叫docker fair,好,文件名呢,我们就叫docker fair,而且你叫doer菲尔的话,连我们的阿迪都能发现你的这个doer fair尔配置,阿迪尔呢,其实也能连向docker,我们把docker呢端口开放阿迪尔直接连上docker,阿迪尔都能帮你。
12:55
把这个镜像呢,打包成我们这个刀客镜像,那么现在就不用idea尔来做这个事情了,那我们现在呢,为每一个微服务来写上我们的刀客费尔,那写什么呢?其实我们以前能写什么这一块呢,我就直接把这个复制过来,我们来给大家看doer fair的内容,以后呢,全部为服务都统一成这个,统一成哪个大家来看,现在呢,我们是这样子的,让Java吧,相当于我们的基础镜像是Java吧,而且暴露8080,注意我现在以后我让所有的微服务我全暴露8080,我也不用给微服务呢编排端口了,那为什么会有这个现象,首先我们来给大家说上一点,我们doer呢,启动,如果我们有这个镜像,我们启动的是不是一个容器,对,然后呢,Doer,与此同时,在我们的虚拟机里边是不是还启动了非常多的容器,然后呢,我们这个容器里边跑了我们的APP应用,这个应用的端口是8080。
13:54
好,那我们其他容器难道就不能在自己的里边跑一个端口叫8080吗?所以呢,我们其实每一个容器它里边呢,都能有一个应用,用8080端口没问题,所以我们为了不让端口,我们天天一会儿写个80808081,我们还得编排,我们就直接让所有的微服务在线上环境的时候都是8080,那这样我们DOER1启动容器以后,所有的微服务在docker容器内部是8080,但是你想要往出暴露的时候,你只要别跟别人冲突,你说你暴露的时候它都8080占了,比如它对内是8080,对外暴露还是8080,那你想再要暴露8080,那就不能暴露了,肯定被占用了,但是我们对内没有任何问题,所以呢,为了我们整个部署期间能迅速快捷我们好整个编排服务,我们就应该将每一个微服务在线上环境的时候。而且注意我们部。
14:54
只修改的是我们doer镜像要暴露8080,那doer既然它暴露8080,那肯定就得有人用这个8080,容器内部用8080,那就能连上,所以我们现在呢,每一个微服务,大家下去把它的这个配置文件只改我们线上的这个配置,它的这个端口全部改成8080,那我这个呢,刚才都已经做了,我给大家看一下,我任何一个微服务在线上的这个端口全是8080,我们来往下看,诶都是8080,我一点都不担心,因为我们每一个微服最终跑成他自己在他自己容器里边以后跟别人是没有任何干扰的,他用8080,它在它的容器里边用8080没有一点问题,只是我们把这个容器如果想要端口往出暴露的话,暴露的话,我们不用这个。
15:46
8080来占它就行了,好,那现在呢,我们让每一个微服务都8080,而且呢,每一个微服务我们都编写好do克菲尔,Do克菲尔呢这么来编写这块都是固定from java8,我们每一个微服肯定要用JAVA8这个基础环境,然后暴露8080引用每一个微服务,现在以后即使运行都是8080端口的没问题,然后呢,它的这个基础容器是这个temp,不是基础容器,是我们的挂载券临时数据,然后我们以后所有的这个运行时的这些临时数据,全部呢,我们刚才给大家进了那个docker容器里边,全部呢,都会给大家放在这个PI里边,所有的这个日志全部放在这儿,你把这个东西呢,你还可以挂载到我们真正的我们的这个虚拟机里边,如果是Co ne,你可以拿一个PVC把它挂载起来,那就保证我们的这个容器,它时刻呢只保持最小的体积,它所有要保存的这个数据都在外界挂载。
16:47
的是PVC,那么temp里边的数据呢,都连接的是外界的东西,好,所以这是我们说的这个temp。那么这一块呢,就是固定的每一个人都用零时目录temp,那接下来and and是什么,我们来添加,添加什么呢?先大家注意,我现在呢,把这个docker和我们的这个微服务,我们是跟它放在这个目录,在它的这个目录里边的,以前我给大家演示的时候,我来看一下,我是呢把这个炸包和doer fair我直接放到了一个文件夹下,但么现在呢,肯定不能了,因为我们这个微服务一打炸包以后,它在这个target目录,所以呢我写了这一句话叫and,把target目录里边的这个炸包,什么炸包呢?你可以写一个心点炸,那就是target里边的所有炸包,其实就这一个炸包,然后呢,复制到我们这个更路镜下,更路镜下我们叫什么叫APP点炸,所以呢,它给里的里边的这个炸包,我们复制成PA papp点炸,然后呢给APA点炸,修改一个时间改完了。
17:55
以后呢,我们现在只要你拿我的这个镜像启动你do run1启动,默认呢,就是运行这个命令加Java杠炸APP点炸,这个APP点炸其实就是我们这个also server来运行这个的时候,那再来加上一个命令,加一个什么来加一个启动参数,加SP点一个pro,点一个active,就是我们spring的这个相当于它启动的这种环境,因为我们在spring的配置文件里边,大家看我是不是抽取了一个本地我们测试用的和线上的provide这个环境,那这个环境呢,默认是没激活的,你想要激活,你除了来在打包的时候先来修改本地的配置文件,比如我们我们的这个pro active,我们让它呢激活这个product环境,这个product prod的值就是我们杠后边的这个值,然后我们现在让它激活这个环境以后,相当于我们这个配置文件就生效了,那。
18:55
那这个配置文件生不生效呢?其实它呢是一个默认配置文件,它也生效,只不过我们这个配置文件呢,它一生效以后,把它所有的这个配置默认值就覆盖了,那如果覆盖不了的话,两个呢还能形成一个互补配置,所以我们现在相当于一上线以后,我们这一块的配置就生效了,虽然你在这里边配了red之类的,但是最终以我这个为准,那你如果写在这,那就写死了,所以我现在呢,直接不写在这个配置文件里边,我们这个配置文件不变,你这个配置文件你要写在里边,我们现在平时测试期间,它都用的是下边的值,很麻烦,所以呢,我们让它既然都打包成镜像了,就是生产环境用了,所以我在镜像里边,我给它指定spring profiles等于什么什么,我们给他给他指定所active等于product,相当于我们是以一个生产环境的这种配置来启动的。我们生产环境的这个配置就。
19:55
被生效,所以现在呢,我们在这个古力mail o server这个里边,我来写了一个doer fair,其他未知的doer fair一模一样,一点都不变,所以我们现在呢,直接可以把这个doer fair c c我们放到一个任何地方,我们src不放,Src每一个项目它下边都有一个do fair,这个do fair就是负责把它这个项目target里边的这个炸包,咱也无论是啥版本,然后呢给你变成APP点炸,然后呢启动运行就行了,所以每一个微服务我都准备,但是这个common不用准备,这common呢又不是啥镜像,我们是每一个人编译的时候,自动把它的就放进去了,把这个。com呢我们就不准备了,但是每一个其他我们想要运行的微服务我们都我全部呢把这个docker fair CR c,我给这儿呢,CRLV1份,好,全部都CRLV1份。
20:52
但这三个微服务呢,是我们这个测试期间的代码,我们就不CTRL,为了不编译它们不运行了,好然后呢,我们把这个其他的我们所有的要用到的微服务,那全部呢,将这个doer费复制过来。
21:10
那人fast的这个doer fair,我们也给它全部替换了,然后呢,我们让他线上呢,激活这个prod,相当于我们的这种生产环境,那线上生产环境的这个配置,我之前呢,把这个人人fast的这个生产环境的配置也改了,大家都得改得连上我们线上的数据库,但是呢,我们除了线上的数据库门呃不里开压面里边其他的配置都是一个互补的,所以我们现在呢,可以直接用除了它的这个互补配置再来线上生效,好没任何问题,那如果这两个里边有相同的值,那都以我们这个线上的为准,好那么现在呢,每一个微服我们都给它指定了docker费。而且呢,每一个微服务都是8080端口,大家一定给它改掉,每一个微服务呢,都是启动的8080端口,那这个准备好了以后,我们下一节课呢,就可以使用一个流水线的方式把所有代码拉下来,然后呢,我们自己手动的构建一个docker镜像。
我来说两句