容器和微服務可謂是一對好朋(ji)友(you),由於微服務架構下的業務服務一般都基於SpringBoot進行開發,上線部署服務的時候經過容器來進行部署,可以簡化部署的過程,而後使用一些容器管理工具管理容器,例如k8s、rancher等。這樣才能方便咱們進行擴展、重建以及銷燬服務等操做,最重要的是使用Docker部署項目會比傳統的部署方式更簡單,基本就幾條命令的事,因此學會使用Docker部署SpringBoot項目顯得尤其重要。html
本文默認讀者已經掌握docker的相關操做,若是你對docker相關的知識不熟悉,能夠參考我容器/虛擬化
分類的文章,我這裏就不對其進行贅述了,地址以下:java
通常咱們會將docker鏡像存放在鏡像倉庫中,這樣方便於在其餘機器上拉取鏡像。若是是我的使用的話,咱們能夠在網易雲上建立本身的鏡像倉庫,網易雲鏡像倉庫地址以下,須要註冊帳戶:shell
帳戶註冊好後,咱們來試着手動建立一個本身的鏡像倉庫:bash
填寫鏡像倉庫的相關信息:服務器
建立完成:架構
不過咱們通常不會手動去建立鏡像倉庫,而是在本地build好鏡像,而後推送到倉庫上。app
關於推送本地鏡像到網易雲鏡像倉庫上的文檔地址以下,因此關於推送本地鏡像我就不過多贅述了:maven
接下來咱們docker化本身的SpringBoot項目,我如今已經準備好了一個須要docker化部署的SpringBoot項目,項目根目錄以下:
爲咱們本身的項目製做鏡像時,須要基於一個系統鏡像,咱們能夠到網易雲的鏡像中心去獲取所需的系統鏡像,地址以下:
我這裏使用的是alpine系統的鏡像,鏡像地址:hub.c.163.com/library/java:8-alpine
。
在項目的根目錄中,建立一個Dockerfile文件,編輯文件內容以下:
FROM hub.c.163.com/library/java:8-alpine MAINTAINER zeroJun xxx@example.com 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項目。