近一、兩年,SPRingBoot和Docker可以說(shuō)非常的火熱啊,而早在2015年的時(shí)候我就弄過(guò)一下Docker,不過(guò)由于職位和跳槽等種種原因,2016年就很少搞了,不過(guò)現(xiàn)在再撿起來(lái)也是很容易的。而SpringBoot我也是最近才開(kāi)始學(xué)的,不知道有木有落伍哈。微服務(wù)概念的提出的同時(shí)也把這幾個(gè)技術(shù)帶到了高潮,現(xiàn)在就來(lái)實(shí)踐一把。
其中Gitlab主要是用來(lái)存放代碼的倉(cāng)庫(kù)以及觸發(fā)構(gòu)建。關(guān)于這個(gè)怎么集成可以查看我先前寫(xiě)的一篇博文 Jenkins+Gitlab搭建CI持續(xù)集成架構(gòu)。
Jenkins、Gitlab的安裝在上面那篇博文中有說(shuō)明,Docker的安裝配置在我之前寫(xiě)的另一篇博文sonatype nexus 3搭建Docker私有倉(cāng)庫(kù)中也有說(shuō)到,這里就不過(guò)多介紹了。
SpringBoot項(xiàng)目骨架可以在官方網(wǎng)站上進(jìn)行下載:https://start.spring.io/ 這個(gè)也不多說(shuō)了。。。
整個(gè)項(xiàng)目以一個(gè)springboot-jpa為示例,最后面會(huì)給出源碼,詳細(xì)的說(shuō)明可以參看源碼吧。 項(xiàng)目結(jié)構(gòu)如下:
其中Dockerfile為構(gòu)建docker鏡像的腳本,在這里我使用的是自己制作的私服鏡像,如果要在公網(wǎng)上使用可以打開(kāi)注釋換一個(gè),關(guān)于Docker私服的搭建使用也可以參看我之前的那篇博文。 項(xiàng)目根目錄中的build.sh為打包構(gòu)建啟動(dòng)容器的腳本,在jenkins項(xiàng)目構(gòu)建步驟中可以直接執(zhí)行該腳本。
項(xiàng)目resources目錄中的schema.sql為啟動(dòng)應(yīng)用時(shí)初始化創(chuàng)建表結(jié)構(gòu)的文件,data.sql為填充數(shù)據(jù)表內(nèi)容的文件,這個(gè)僅為測(cè)試使用。SpringBoot會(huì)自動(dòng)調(diào)用這個(gè)2個(gè)文件的,我們不用管。
項(xiàng)目代碼很簡(jiǎn)單,好像也沒(méi)什么好說(shuō)的哈,數(shù)據(jù)庫(kù)源的配置都在application.properties
文件中,如果要測(cè)試使用的話需要替換下數(shù)據(jù)庫(kù)源,其他的看下代碼就行了。
創(chuàng)建jenkins項(xiàng)目,輸入項(xiàng)目名,選擇自由風(fēng)格。配置需要注意的只有兩點(diǎn),一個(gè)是:源碼管理,二個(gè)是:構(gòu)建的步驟。
我們這里使用的是Gitlab作為源碼管理,所以選擇Git,輸入遠(yuǎn)程倉(cāng)庫(kù)名和用戶認(rèn)證。這個(gè)沒(méi)有配置正確是無(wú)法從遠(yuǎn)程倉(cāng)庫(kù)下載源碼的,提示權(quán)限問(wèn)題。關(guān)于認(rèn)證的配置也請(qǐng)參看我之前的博文Jenkins子節(jié)點(diǎn)構(gòu)建配置,這里不做過(guò)多的詳細(xì)介紹了。
構(gòu)建步驟也很簡(jiǎn)單,直接執(zhí)行項(xiàng)目根目錄中的那個(gè)構(gòu)建腳本就行了。 這里需要注意的是環(huán)境變量問(wèn)題,我是將JDK和Maven等工具變量都寫(xiě)在
/etc/profile
文件中的,內(nèi)容很簡(jiǎn)單,在文件最后面添加以下內(nèi)容,這個(gè)根據(jù)不同的環(huán)境進(jìn)行配置即可:
這里需要注意:默認(rèn)Docker命令只能root用戶使用,jenkins用戶是沒(méi)有權(quán)限使用的,我們可以將jenkins用戶加入docker組中,然后再斷開(kāi)、注銷、連接就可以了。
將jenkins用戶添加進(jìn)docker組$ sudo gpasswd -a jenkins docker構(gòu)建完成后,還可以選擇push上傳鏡像,這個(gè)需要先登錄才行。代碼在build.sh
構(gòu)建腳本中有,我這里使用的是私服,可以根據(jù)需要進(jìn)行修改。
大概的步驟就這么些,實(shí)際公司內(nèi)操作可能沒(méi)這么簡(jiǎn)單,這里僅作為學(xué)習(xí)參考使用。源碼: https://github.com/lusyoe/springboot-jpa
參考文檔: https://spring.io/guides/gs/spring-boot-docker/
新聞熱點(diǎn)
疑難解答
圖片精選