簡單幾步,使用docker打包springboot應用

當一個公司越做越大的時候,公司的系統應用也會隨著不斷增加的新業務變得越來越復雜和越來越臃腫,這個時候就需要將這些復雜臃腫的應用拆分成一個個的微服務,分而治之。微服務是現在企業級應用開發中流行的一個概念,涉及很多地方,下面我們從其中的一個小方面,微服務的封裝,來做一個實踐。

  1. 選型

    docker。 docker的大名大家應該都如雷貫耳了,用docker封裝微服務可以省去運維上的麻煩,沒有復雜的操作手冊,無需一遍又一遍的執行一些繁瑣的shell命令,也不會出現諸如“在我電腦上是沒問題的啊”這種說不清楚的問題,用docker來封裝微服務,操作簡單,省時省力。

    springboot。被封裝的微服務樣例使用springboot來搭建。

    ubuntu。服務器環境。下面的例子中的ubuntu環境運行在我本地的虛擬機中。

    centos。微服務的運行環境。

  2. 安裝docker

    在Ubuntu環境中運行一下命令即可

  apt install docker.io
  1. 獲取centos鏡像

    centos是目前主流的服務器linux的發行版,占用資源少,且穩定。我們先從docker的鏡像庫中搜索centos,并根據獲取到本地

    • 搜索centos鏡像
  docker search centos
1.jpg
  • 根據搜索到的NAME參數,獲取鏡像到本地,不加版本號的情況下,默認拉取的是最新版本
  docker pull centos
2.jpg
  • 查看本地鏡像
  docker images
3.jpg
  1. 制作自己的鏡像,這一步中需要將已經編寫好并導出的springboot應用jar包復制到centos鏡像中,并且在鏡像中配置好jdk

    • 將要上傳的jar包和上傳到ubuntu的目錄


      4.jpg
    • 啟動centos容器
  docker run -i -t -v /home/kuzz/software/:/mnt/software/ ff426288ea90 /bin/bash

這條命令比較長,我們稍微分解一下,其實包含以下三個部分:docker run <相關參數> <鏡像 ID> <初始命令>
其中,相關參數包括:
-i:表示以“交互模式”運行容器
-t:表示容器啟動后會進入其命令行
-v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>
假設我們的所有安裝程序都放在了宿主機的/root/software/目錄下,現在需要將其掛載到容器的/mnt/software/目錄下。
也就是說:/root/software/是本來虛擬機的真實目錄,其對應的容器中的目錄為:/mnt/software/
那么虛擬機中/home/kuzz/software/下存放的文件信息,到容器的/mnt/software/能對應的看到文件信息。

5.jpg
  • 解壓jdk

    將jdk壓縮包解壓到指定目錄,我在centos的鏡像中創建了一個/app/java的目錄,并解壓在這個目錄中


    6.jpg
  • 將應用jar包復制到指定目錄,我放在了/app/simpleboot目錄中


    7.jpg

    這里這個jar就是需要被封裝的微服務,功能比較簡單,就是在獲取到http請求時,打印一段文字,名字叫simpleboot.jar

8.jpg
  • 退出容器
  exit
  • 找到剛剛編輯過的容器id
  docker ps -a
9.jpg
  • 提交更改,將更改保存為一個新鏡像,這里我將新鏡像命名為kuzz/simpleboot,版本號為0.1
  docker commit d5803e784667 kuzz/simpleboot:0.1
  • 此時輸入命令查看鏡像,本地已經有了新保存的鏡像
  docker images
10.jpg
  1. 編輯Dockerfile文件

    在ubuntu目錄中新建一個Dockerfile文件,內容如下,其中FROM指定基礎鏡像,ENV為啟動時的環境變量,ENTRYPOINT為啟動時運行的命令。


    11.jpg
12.jpg
  1. 根據Dockerfile編譯生成新鏡像,命令中-t 指定新鏡像名字,命令最后的 . 表示Dockerfile所在的目錄
  docker build -t newboot .

此時查看本地鏡像,可以發現新生成的鏡像newboot也在其中了


13.jpg
  1. 啟動新容器,其中-d 表示以守護進程的方式啟動,-p綁定宿主機和容器的端口,下面18080位宿主機ubuntu的端口,8080為容器中的端口
  docker run -d -p 18080:8080 newboot
  1. 此時在瀏覽器中輸入unbuntu的ip和18080端口,就可以訪問被封裝的服務了


    14.jpg
  1. 操作過程中可能遇到的一些問題

    由于上面整個過程是在虛擬機中完成的,所以當最后在本地電腦中訪問虛擬機ubuntu的18080端口時訪問不了,原因是ubuntu的防火墻禁止訪問了這個端口。執行以下命令可開啟端口

  ufw allow 18080

若ubuntu中未安裝 ufw,可用以下命令安裝

  apt-get install ufw

若用ufw開啟端口后仍不能訪問,可試著刪除防火墻后,再安裝ufw

  apt-get remove iptables
  1. 后記

    實際上上面的操作也略顯繁瑣了,在正常的可以訪問外網的服務器上,我們完全可以直接將centos作為基礎包,即Dockerfile中的FROM參數,然后再將上傳jdk和jar包的動作配置在Dockerfile中完成,但考慮到真實的部署場景可能服務器并不能訪問外網,需要將centos,還有jdk等都先配置好,在將鏡像傳到生產服務器上運行啟動,所以選擇了先拉取外網鏡像庫中的centos,再創建一個本地的鏡像這樣的做法。

    docker的功能強大,能做的事情遠不止與此,配置也可以有很多其他靈活的方法,以上的實踐純屬拋磚引玉,歡迎一起探討。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,443評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,530評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,407評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,981評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,759評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,204評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,263評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,415評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,955評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,650評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,892評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,675評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374

推薦閱讀更多精彩內容