1. 程式人生 > >將spring boot專案執行在docker容器的tomcat映象中

將spring boot專案執行在docker容器的tomcat映象中

docker的概念和作用我就不介紹了,網上有很多資料,理解起來也不難,主要就是倉庫,映象和容器三個概念。我這裡是是把spring boot專案執行在docker容器的tomcat映象下所以要準備一個war包。想以jar包的方式執行的話也比較簡單,不做介紹。

操作準備

  • 一個打成war包的spring boot專案
  • 準備一個裝好了docker的機器

操作姿勢

1.我們把war包用ftp傳到linux上
這裡寫圖片描述
2.我們用vim編輯器建一個Dockerfile檔案,開啟並且編輯一下內容

[root@localhost ~]# vim Dockerfile

這裡寫圖片描述
3.執行命令構建自定義映象(千萬注意不要少了命令最後的”.”)並檢視映象倉庫是否構建成功:

[root@localhost ~]# docker build -t sbdemo:latest .
[root@localhost ~]# docker images

這裡寫圖片描述
4.然後執行sbdemo映象並指定本機18080埠對映容器內tomcat的8080埠啟動(-d指的是後臺執行):

[root@localhost ~]# docker run -d -p 18080:8080 sbdemo

5.啟動成功後會打印出一個64為的容器id,我們輸入命令檢視當前docker有哪些容器在執行,我們發現容器的id變短了只有16位,是因為這是一個短板id和完整版id前16位是一致的,我們也看到18080埠監聽容器內的8080埠,意味著我們訪問18080埠即可訪問容器內的8080埠:

[root@localhost ~]# docker ps

這裡寫圖片描述

6.瀏覽器輸入ip:18080,我們發現tomcat的介面打開了,接著我們補全路徑ip:18080/hello,發現是404,怎麼回事?
我思考了下,當時沒用docker在外部tomcat部署專案時把tomcat下的webapps目錄下的ROOT資料夾刪了,然後把sbdemo.war改成ROOT.war,於是我也打算這麼做試試。
7.首先我們進入容器內部,由於當前就一個容器在執行,沒必要輸入id全程,因為是9開頭輸一個9就能識別:

[root@localhost ~]# docker exec -it 9 bash

8.我們進入容器內部後進入webapps資料夾刪除ROOT資料夾,把sbdemo.war改名為ROOT.war。
這裡寫圖片描述


9.退出容器,重啟容器,然後再訪問ip:18080/hello,發現已經可以輸出Hello World了

root@93266fba71f8:/usr/local/tomcat/webapps# exit
exit
[root@localhost ~]# docker restart 93266fba71f8