IDEA+Docker大法
一次上班的路上,看到一篇文章说Docker和SpringBoot可以很好的协作。IDEA里面已经有了docker的plugin,我们知道springboot里面有内嵌server(tomcat),通过运行main,就可以将生成的jar丢到server上去,然后就可以在网页上验证编写的模块,从而提高了开发效率。当然如果你写好应用,测试没问题了,还要去push和deploy你的jar,还是需要额外的工具来帮助你。不仅仅这,你还要在服务端起个server,把你的应用部署上去......短则几分钟,长则小时计。
docker说太慢了,docker说当我build项目的时候,我就可以把你的jar打成image,然后push到registry中(和maven的私服一个道理),并打上相应的tag,别人就可以直接通过docker pull,就把你的image拉下来,然后本地起一个container,就可以看到你的修改了(这个过程秒级!!!)。
那么既然springboot都可以和docker进行配合,普通的项目呢?spring和springboot不是就差个容器嘛?容器我可以用docker建啊,再把文件copy到容器里,不就和springboot一样了。
尝试:
准备工作,需要在windows上安装docker(拿windows做的实验)。启动如下:
![](https://img.haomeiwen.com/i4006834/98933d062ba37689.png)
在idea里配置docker plugin。
![](https://img.haomeiwen.com/i4006834/6642e1f9a9dd3abf.png)
在setting中配置docker相关的URL。如图,该地址就是拟启动docker的时候映射在本地的ip地址,下面一个证书同样可以在docker machine里找到。点击ok。
![](https://img.haomeiwen.com/i4006834/0ddd75289b49f263.png)
接着下面是配置registry的地方。
![](https://img.haomeiwen.com/i4006834/954621a9fd221abf.png)
接着创建一个maven webapp的项目。结构如下:
![](https://img.haomeiwen.com/i4006834/36ffbce5beb6f372.png)
因为是要生成image,所以我自定义了Dockerfile,目的是为了构建自己的容器。下面是我的dockerfile内容,很简单,拉取远程的一个tomcat的镜像,然后把我的war包放到tomcat里。最后启动我的tomcat。(这里是拉取的daocloud上的,默认从docker.io,由于网络的原因,速度很慢)
![](https://img.haomeiwen.com/i4006834/0d9174074f545cdc.png)
下面是pom.xml需要的配置。定义项目的名称,以及引用docker plugin,设置项目生成的image,tag等。
![](https://img.haomeiwen.com/i4006834/b293e45284bcc54d.png)
![](https://img.haomeiwen.com/i4006834/7a015b54823b59c1.png)
接下来需要配置run config。这边可以指定容器映射到宿主机上的端口,以及container起起来后,启动的浏览器,默认打开的url和debug端口等。
![](https://img.haomeiwen.com/i4006834/7974a87304d71dd0.png)
下面还可以设置我在build 生成image之前可以做的操作,这边我是maven,把我最新的项目打下包,clean,package。
![](https://img.haomeiwen.com/i4006834/d234b5185815169f.png)
下面是配置docker-machine,可以通过json文件的方式(当然也可以在上图中配置的那样)指定映射端口。
![](https://img.haomeiwen.com/i4006834/d1add665f2a810e4.png)
![](https://img.haomeiwen.com/i4006834/c4ec20f4eae6195c.png)
到这边一切准备就绪了。开始施展大法:
点击docker console里的deploy按钮,就会发现,项目开始build,在打包完成之后,开始build image,并启动一个container。速度很快(一口水),如下:
![](https://img.haomeiwen.com/i4006834/8f2ceec47dfe11b1.png)
最终我们就可以在浏览器里看到效果了!
![](https://img.haomeiwen.com/i4006834/6c0dcc5cd28eea93.png)
一键打包部署,值得了解一下。相信不久,本地都无需安装任何中间件了。