在docker容器中使用tomcat部署war包主要包括四個步驟,創建tomcat容器、上傳war包到容器、重啟容器、訪問應用。
1.創建tomcat容器
使用docker run -d --name cmdtomcat -p 8080:8080 tomcat命令啟動了tomcat容器,在瀏覽器輸入http://localhost:8080/可以顯示tomcat配置頁面。使用docker ps -a可以看到cmdtomcat的容器。
使用docker exec -it 6ba4ccc864bd /bin/bash命令交互式的進入tomcat容器,可以看到webapps目錄以及webapps目錄下的文件。
2.上傳war包到tomcat容器
war包是第九章打包部署用的包,為了方便演示,這里將war包放在了G:\dockerwar目錄下。docker中也可以使用cp命令完成和宿主機的文件拷貝。
Docker cp G:\dockerwar\SpringBootSwagger-0.0.1-SNAPSHOT.war cmdtomcat:/usr/local/tomcat/webapps
3.重啟容器
使用docker restart cmdtomcat命令重啟容器,然后進入容器可以看到上面拷貝進去的SpringBootSwagger-0.0.1-SNAPSHOT.war包。
4.訪問應用
瀏覽器輸入http://localhost:8080/SpringBootSwagger-0.0.1-SNAPSHOT/swagger-ui.html即可正常顯示頁面。
5.以掛載方式啟動
上述執行有個弊端就是容器重啟后項目就會不再了,我們可以以掛載的方式啟動。
docker run -d -v G:/dockerwar/SpringBootSwagger-0.0.1-SNAPSHOT.war:/usr/local/tomcat/webapps/SpringBootSwagger-0.0.1-SNAPSHOT.war --name cmdtomcat2 -p 8081:8080 tomcat
如上圖所示,進入cmdtomcat2容器,可以看到SpringBootSwagger-0.0.1-SNAPSHOT.war已在webapps目錄下。在瀏覽器輸入http://localhost:8081/SpringBootSwagger-0.0.1-SNAPSHOT/swagger-ui.html也是正常顯示頁面。
6.小結
這里只是演示了docker部署war的基本用法,對於在tomcat容器中可能會訪問數據庫的部分還需要優化,還需要將數據庫部分容器化然后與tomcat容器關聯才能訪問數據庫。使用dockerfile部署時遇到使用COPY、ADD都無法將war拷貝到tomcat容器的webapps目錄下,使用VOLUME能掛載卷到webapps中,但重啟tomcat容器並未將war解壓,后續還需優化。