2014年12月6日

在Docker上部署Java Web Application

Docker很友善,它提供一個Docker Hub平台,在上面你可以找到很多由許多官方提供的Image檔,因此像我這種對於Linux目錄結構以及軟體相依性之類的事情不太熟悉的人,也能夠輕鬆的直接透過Docker Hub抓取Tomcat image,獲得一個官方建制好的Image,直接使用它來將自己開發的Web Application丟上去執行,實在是太方便了!

執行流程

首先先將tomcat官方提供的images抓回來,以下為官方images檔的網址:
https://registry.hub.docker.com/_/tomcat/

進去之後,你可以看到它有很多的Tags,分別代表Tomcat的版本以及它所使用的Java版本,這次我選用tomcat7配上jre8的版本,因此透過以下指令抓取images回來:
docker pull tomcat:7.0.57-jre8
接著我要啟動Container,並且我將它命名為mayer_tomcat,然後將設定其port綁定,將實體機器上18080與Container的8080port做綁定,接著使用-d標籤讓它在背景執行:
docker run --name mayer_tomcat -p 18080:8080 -d tomcat:7.0.57-jre8
這樣一來,Tomcat Container就已經啟動了,由於我是在Mac上測試的關係,因此我必須先下指令查詢boot2docker的ip為何:
bash-3.2$ boot2docker ip

The VM's Host only interface IP address is: 192.168.59.103  
得到ip之後,就可以直接開啓瀏覽器,輸入192.168.59.103:18080,就能看到Tomcat畫面:

接著使用Eclipse開啓一個新的Dynamic Web Project,將之命名為dockerap,這邊我只弄了一個index.html的檔案,內容只印出Hello Docker,然後我將它打包成war檔,並且上傳至網路空間。
接著使用exec指令,執行該Container的bash:
docker exec -it mayer_tomcat /bin/bash
進去之後,預設路徑為/usr/local/tomcat,我先切換至webapps目錄,接著在將該war檔下載回來,最後離開bash:
cd webapps
wget https://dl.dropboxusercontent.com/u/xxxxxxxx/dockerap.war
exit
最後重新啟動Tomcat Container:
docker restart mayer_tomcat
開啓瀏覽器,輸入192.168.59.103:18080/dockerap/,就能看到Web Application已經成功部署在Container上了,大功告成!