使用alpine環境自己打包安裝一個tomcat環境。
使用的是openjdk的jre,目标就是系統盡量的小。
依賴的東西盡量的少。建構tomcat最少需要一個jre。
使用的openjdk8的jre,才106mb。已經非常的小了。
<a href="http://blog.csdn.net/freewebsys/article/details/53744348">http://blog.csdn.net/freewebsys/article/details/53744348</a>
下載下傳tomcat:
<a href="http://tomcat.apache.org/download-80.cgi">http://tomcat.apache.org/download-80.cgi</a>
tomcat最新的版本是8.5.9 ,tomcat9 還在測試中,生産環境使用tomcat8就行了,性能足夠了。
首先解壓縮,然後把tomcat裡面的亂七八糟的東西删除下。
什麼root,manager,user啥的,防止别人獲得管理權限。
然後修改下service.xml,設定root是 / 通路。
其中删除了jrememoryleakpreventionlistener,關閉了tomcat的一個小時一次的full gc操作。
正常系統上線,記憶體一般都設定的很大不用擔心這個。
<a href="http://gao-xianglong.iteye.com/blog/2171441">http://gao-xianglong.iteye.com/blog/2171441</a>
vi dockerfile
注意這裡依賴openjre8 的鏡像,要提前打好。
建構:
這樣打包的tomcat 隻有 114.8 mb 。非常的小呢。
建立檔案夾:
寫一個web.xml 配置
建立臨時檔案夾,log檔案夾,temp檔案夾,并設定權限。
在做tomcat基礎包的時候,把root檔案夾空出來,以後的應用要使用的時候再加上。
啟動tomcat:
啟動tomcat并綁定端口8080,映射目錄/data/tomcat/root 作為主目錄,同時映射logs和temp檔案夾。
這樣直接可以看tomcat的日志了。
測試下能通路成功。
進入docker容器檢視:
docker exec -it tomcat-test bash
bash-4.3# df
特别注意一點。有的是docker啟動的時候并沒有帶動tomcat啟動,而是直接退出了。
這個并不是docker的問題。是因為使用的指令不對。要使用 catalina.sh run 這個參數,這個指令一直執行。
如果使用startup.sh的時候就上背景了。docker以為有問題了。shell執行完了,就直接退出了。然後就不能-d執行了。
也就是說,使用entrypoint 和cmd 指令必須是一個死循環一直執行的指令。
entrypoin和cmd的差別就是cmd可以被替換。
要是使用 docker run -it demo/tomcat-base bash這個指令執行兩個不同包。
entrypoint的包tomcat會啟動,而cmd打的包,tomcat被shell替換了。不啟動。