一次上班的路上震捣,看到一篇文章說Docker和SpringBoot可以很好的協(xié)作勤篮。IDEA里面已經(jīng)有了docker的plugin,我們知道springboot里面有內(nèi)嵌server(tomcat),通過運行main,就可以將生成的jar丟到server上去疏日,然后就可以在網(wǎng)頁上驗證編寫的模塊,從而提高了開發(fā)效率佳窑。當(dāng)然如果你寫好應(yīng)用制恍,測試沒問題了,還要去push和deploy你的jar神凑,還是需要額外的工具來幫助你。不僅僅這何吝,你還要在服務(wù)端起個server溉委,把你的應(yīng)用部署上去......短則幾分鐘,長則小時計爱榕。
docker說太慢了瓣喊,docker說當(dāng)我build項目的時候,我就可以把你的jar打成image黔酥,然后push到registry中(和maven的私服一個道理)藻三,并打上相應(yīng)的tag洪橘,別人就可以直接通過docker pull,就把你的image拉下來棵帽,然后本地起一個container熄求,就可以看到你的修改了(這個過程秒級!6焊拧5芡怼)。
那么既然springboot都可以和docker進(jìn)行配合逾苫,普通的項目呢卿城?spring和springboot不是就差個容器嘛?容器我可以用docker建啊铅搓,再把文件copy到容器里瑟押,不就和springboot一樣了。
嘗試:
準(zhǔn)備工作星掰,需要在windows上安裝docker(拿windows做的實驗)勉耀。啟動如下:
? 在idea里配置docker plugin。
在setting中配置docker相關(guān)的URL蹋偏。如圖便斥,該地址就是擬啟動docker的時候映射在本地的ip地址,下面一個證書同樣可以在docker machine里找到威始。點擊ok枢纠。
接著下面是配置registry的地方。
接著創(chuàng)建一個maven webapp的項目黎棠。結(jié)構(gòu)如下:
因為是要生成image晋渺,所以我自定義了Dockerfile,目的是為了構(gòu)建自己的容器脓斩。下面是我的dockerfile內(nèi)容木西,很簡單,拉取遠(yuǎn)程的一個tomcat的鏡像随静,然后把我的war包放到tomcat里八千。最后啟動我的tomcat。(這里是拉取的daocloud上的燎猛,默認(rèn)從docker.io恋捆,由于網(wǎng)絡(luò)的原因,速度很慢)
下面是pom.xml需要的配置重绷。定義項目的名稱沸停,以及引用docker plugin,設(shè)置項目生成的image昭卓,tag等愤钾。
接下來需要配置run config瘟滨。這邊可以指定容器映射到宿主機(jī)上的端口,以及container起起來后能颁,啟動的瀏覽器杂瘸,默認(rèn)打開的url和debug端口等。
下面還可以設(shè)置我在build 生成image之前可以做的操作劲装,這邊我是maven胧沫,把我最新的項目打下包,clean占业,package绒怨。
下面是配置docker-machine,可以通過json文件的方式(當(dāng)然也可以在上圖中配置的那樣)指定映射端口谦疾。
到這邊一切準(zhǔn)備就緒了南蹂。開始施展大法:
點擊docker console里的deploy按鈕,就會發(fā)現(xiàn)念恍,項目開始build六剥,在打包完成之后,開始build image峰伙,并啟動一個container疗疟。速度很快(一口水),如下:
最終我們就可以在瀏覽器里看到效果了!
一鍵打包部署瞳氓,值得了解一下策彤。相信不久,本地都無需安裝任何中間件了匣摘。