1. 程式人生 > 實用技巧 >centos7一步一步搭建docker tomcat 及重點講解

centos7一步一步搭建docker tomcat 及重點講解

系統環境:centos7.7 (VMware中)

  image版本:tomcat:8-jdk8-openjdk (截止2020.01.10該系列版本)

  安裝步驟參考文章:https://www.jianshu.com/p/d053573ffab1

1、docker search tomcat檢視版本總感覺不太直觀,可以去官網查詢想要的版本https://hub.docker.com/_/tomcat?tab=tags&page=1,然後使用docker pull tomcat:對應版本號安裝,安裝最新可以直接使用 docker pull tomcat。

2、docker images 檢視已經安裝的映象。

3、docker run -d --name test_tomcat -p 8081:8080 tomcat:8-jdk8-openjdk初始化一個tomcat容器,並命名為 test_tomcat 。

4、docker ps檢視啟動的docker tomcat 容器。

在(2020.1.5號以前)瀏覽器中輸入ip:埠號應該是可以訪問到tomcat管理頁面的,但是最新版本的dockertomcat映象執行後的容器訪問是404

5、進入docker tomcat檢視目錄。命令 docker exec -it 容器名字(或容器container id) bash。此處推薦用容器名字(如上面命名的容器名字test_tomcat)方便書寫。預設進入容器的 /usr/local/tomcat 資料夾,這裡注意幾個資料夾後面會用到,一個是conf,一個是webapps。我們進入conf,然後檢視裡面有哪些檔案,注意tomcat-users.xml是我們要複製的。

6、然後我們切換進webapps資料夾,檢視裡面的檔案,竟然是空的!!!裡面不應該有manager等資料夾嗎??等等,我們看上圖,webapps後面怎麼多了一個webapps.dist資料夾???以前的版本是沒有的!讓我們切換進webapps.dist資料夾,檢視裡面的檔案,哇!!!這不是應該在webaspps中的檔案嗎???(個人猜測:因為docker推薦將webapps下的檔案掛載在宿主機下,否則刪除tomcat容器的時候服務檔案會全部丟失,為了讓大家主動將webapps掛載出來,可能維護者將以後的tomcat映象全部改成webapps為空,需要使用者手動將webapps.dist複製出來並掛載使用

7、exit退出容器,在這之前建立linux宿主機資料夾用於儲存tomcat容器中複製出來的配置檔案(mkdir -p /usr/local/tomcat)。cd /usr/local/tomcat後複製tomcat容器配置檔案(tomcat-users.xml)和整個webapps.dist資料夾到linux 宿主機。用語句 docker cp 容器配置檔案路徑 linux宿主機儲存路徑

docker cp test:tomcat:/usr/local/tomcat/webapps.dist /usr/local/tomcat1/webapps

8、停止正在執行的tomcat容器,並刪除該容器test_tomcat。

9、修改複製出來的檔案。tomcat-users.xml配置許可權,/webapps/manager/META-INF/context.xml配置訪問地址和埠等。

  • 編輯tomcat-usrs.xml,底部</tomcat-users>以內新增如下內容,其中授權訪問賬號為:tomcat,密碼為:tomcat.2019
 <role rolename="manager-gui" />
  <role rolename="manager-script" />
  <role rolename="manager-status" />
  <role rolename="manager-jmx" />
  <user username="tomcat" password="tomcat.2019" roles="manager-gui,manager-script,manager-status,manager-jmx" />

  • 切進/webapps/manager/META-INF資料夾,編輯裡面的context.xml檔案,將以下內容註釋掉。  
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->

10、重新執行一個tomcat容器,並掛載本地的配置檔案到容器對應檔案。 

docker run -dit --name my_tomcat_2020 -p 8081:8080 --restart=always -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro -v /www/tomcat/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml -v /www/tomcat/webapps:/usr/local/tomcat/webapps tomcat:8-jdk8-openjdk引數解析:-d           後臺執行容器,並返回容器ID;--name       為容器起一個容易區分且容易書寫的名字-p           對映宿主機埠到容器埠,宿主機埠:容器埠--restart=always  機器重啟時自動啟動容器-e       設定一些必須的環境變數。本例子中 -e TZ="Asia/Shanghai" 設定時區為上海,強烈建議國內設定,否則容器內列印的所有日誌時間都會差8小時。-v       掛載宿主機檔案到容器。本例三個分別為:          -v /etc/localtime:/etc/localtime:ro 掛載宿主機時間,保持容器時間正確。          -v /www/tomcat/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml 掛載宿主機配置檔案到容器。          -v /www/tomcat/webapps:/usr/local/tomcat/webapps 掛載宿主機/webapps到容器。更多配置引數含義請參考:https://blog.csdn.net/qq_19381989/article/details/102781663

11、重新訪問ip:8081