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