1. 程式人生 > >Docker化你的SpringBoot項目

Docker化你的SpringBoot項目

使用 vpd 登錄 演示 library water block 服務器 rfi

容器和微服務可謂是一對好朋(ji)友(you),因為微服務架構下的業務服務通常都基於SpringBoot進行開發,上線部署服務的時候通過容器來進行部署,能夠簡化部署的過程,然後使用一些容器管理工具管理容器,例如k8s、rancher等。這樣才能方便我們進行擴展、重建以及銷毀服務等操作,最重要的是使用Docker部署項目會比傳統的部署方式更簡單,基本就幾條命令的事,所以學會使用Docker部署SpringBoot項目顯得尤為重要。

本文默認讀者已經掌握docker的相關操作,如果你對docker相關的知識不熟悉,可以參考我容器/虛擬化分類的文章,我這裏就不對其進行贅述了,地址如下:

http://blog.51cto.com/zero01/category27.html

一般我們會將docker鏡像存放在鏡像倉庫中,這樣方便於在其他機器上拉取鏡像。如果是個人使用的話,我們可以在網易雲上創建自己的鏡像倉庫,網易雲鏡像倉庫地址如下,需要註冊賬戶:

https://www.163yun.com/product/repo

賬戶註冊好後,我們來試著手動創建一個自己的鏡像倉庫:
技術分享圖片

填寫鏡像倉庫的相關信息:
技術分享圖片

創建完成:
技術分享圖片

不過我們一般不會手動去創建鏡像倉庫,而是在本地build好鏡像,然後推送到倉庫上。

關於推送本地鏡像到網易雲鏡像倉庫上的文檔地址如下,所以關於推送本地鏡像我就不過多贅述了:

https://www.163yun.com/help/documents/15587826830438400


接下來我們docker化自己的SpringBoot項目,我現在已經準備好了一個需要docker化部署的SpringBoot項目,項目根目錄如下:
技術分享圖片

為我們自己的項目制作鏡像時,需要基於一個系統鏡像,我們可以到網易雲的鏡像中心去獲取所需的系統鏡像,地址如下:

https://c.163yun.com/hub#/m/home/

我這裏使用的是alpine系統的鏡像,鏡像地址:hub.c.163.com/library/java:8-alpine

在項目的根目錄中,創建一個Dockerfile文件,編輯文件內容如下:

FROM hub.c.163.com/library/java:8-alpine

MAINTAINER zeroJun [email protected]

ADD target/*.jar app.jar

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "/app.jar"]

打開命令行終端進入到項目的根目錄下,並登錄你的網易雲鏡像倉庫賬戶:

docker login -u ${賬號} -p ${密碼} hub.c.163.com

然後編寫一個簡單的shell腳本來完成build及推送鏡像的工作:

[zero@localhost /work/superposition]# vim build_superposition.sh
#!/bin/bash
mvn clean package -Dmaven.test.skip=true
docker build -t hub.c.163.com/${倉庫名}/superposition .
docker push hub.c.163.com/${倉庫名}/superposition
[zero@localhost /work/superposition]# 

註意,這裏是倉庫名,即賬號中類似於用戶名的字段,例如我的倉庫名是zerojun,所以腳本內容如下:

#!/bin/bash
mvn clean package -Dmaven.test.skip=true
docker build -t hub.c.163.com/zerojun/superposition .
docker push hub.c.163.com/zerojun/superposition

運行腳本:

[zero@localhost /work/superposition]# sh ./build_superposition.sh

腳本執行完成後,到鏡像倉庫上可以看到鏡像已經成功push上來了:
技術分享圖片

默認從本地push的鏡像都是私有的訪問權限,我們需要設置為公開的,否則無法被外部訪問:
技術分享圖片

當然,你也可以設置為私有的訪問權限,那樣拉取鏡像前,登錄你的倉庫賬號即可,我這裏為了方便演示就設置成功公開了。

點擊鏡像可以查看到鏡像倉庫詳情,復制鏡像的下載地址:
技術分享圖片


到服務器上,使用如下命令拉取這個鏡像:

[root@01server ~]# docker pull hub.c.163.com/zerojun/superposition:latest

使用如下命令,啟動該鏡像為運行中的容器:

[root@01server ~]# docker run -d -p 8080:8080 hub.c.163.com/zerojun/superposition:latest

運行成功後,通過post進行測試如下:
技術分享圖片

可以看到接口能夠正常訪問,如此一來,我們就成功docker化部署了一個SpringBoot項目。

Docker化你的SpringBoot項目