寫在前面,k8s集群均已經搭建好,具體步驟可以查看前面文章。
成都創(chuàng)新互聯(lián)公司主要從事網站制作、成都網站建設、網頁設計、企業(yè)做網站、公司建網站等業(yè)務。立足成都服務雁峰,十多年網站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18982081108
編寫Dockerfile文件,目的創(chuàng)建一個可以公用的image,每次部署tomcat直接使用該鏡像不用每次都進行build鏡像。
#?開始本來想使用tomcat的官方鏡像,但是無奈官方鏡像的系統(tǒng)用的都是diban?8的系統(tǒng),因為我要做日志切割,需要安裝cronolog軟件, #?翻篇google、百度并沒有找到如何使用apt-get?安裝,無奈只能使用源碼安裝,但是安裝過程需要gcc和make的支持 #?使用diban?8的如果不對apt-get?update?操作,安裝不上,但是由于系統(tǒng)落后原因,導致官方或163或清華的源都不支持了。最后無奈使用了ubuntu?14的鏡像。 FROM?ubuntu:14.04.5 #?tomcat安裝目錄 ENV?TOMCAT_HOME?/usr/local/tomcat #?這里是放server.xml的文件的目錄,這個目錄需要跟tomcat/conf文件夾下的server.xml做一個超鏈接,為什么呢?? #?因為我要使用configmap的方式對配置文件掛載,如果直接掛載到conf目錄下,那么目錄下的其它文件就都沒了。所以我們關在的時候掛載新創(chuàng)建的目錄,然后做一個超鏈接映射。 ENV?SERVER_XML?/configfile #?配置jdk環(huán)境 ENV?JAVA_HOME?/opt/jdk1.7.0_21 ENV?JRE_HOME?$JAVA_HOME/jre ENV?JAVA_BIN?$JAVA_HOME/bin ENV?CLASSPATH?$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib ENV?PATH?$TOMCAT_HOME/bin:$JAVA_BIN:$JAVA_HOME/jre/bin:$PATH:$HOME/bin #?增加jdk壓縮包到/opt目錄下 ADD?jdk-7u21-linux-x64.tar.gz?/opt ADD?apache-tomcat-7.0.77.tar.gz??/usr/local RUN? ADD?./catalina.sh?$TOMCAT_HOME/bin/ ADD?./cronolog-1.6.2.tar.gz?/opt/ #?這個是自己手動編寫的tomcat啟動腳本, #?內容很簡單,就兩行,第一行是啟動tomcat使用?sh?/usr/local/tomcat/bin/startup.sh; #?容器要求必須要有前臺執(zhí)行的進程的容器才不會退出,所以第二行隨便tail?-f?了一個日志即可。 ADD?./start.sh?$TOMCAT_HOME/bin/ WORKDIR?/opt/cronolog-1.6.2 RUN?mv?/usr/local/apache-tomcat-7.0.77?/usr/local/tomcat?&&?chmod?a+x?/usr/local/tomcat/bin/*.sh?&&?\ ????apt-get?update?-y?&&?apt-get?install?gcc?make?-y?&&?\ ???./configure?&&?make?&&?make?install?&&?chmod?a+x?$TOMCAT_HOME/bin/start.sh??$TOMCAT_HOME/bin/catalina.sh?&&?\ ???rm?-rf?$TOMCAT_HOME/webapps/*?&&?rm?-rf?$TOMCAT_HOME/conf/server.xml?&&?mkdir?$SERVER_XML?&&?\ ???touch?$SERVER_XML/server.xml??&&?ln?-s?$SERVER_XML/server.xml?$TOMCAT_HOME/conf/server.xml EXPOSE?8080 ENTRYPOINT?["/bin/sh",?"/usr/local/tomcat/bin/start.sh"]
需要用到配置文件內容如下:
?start.sh?
#!/bin/sh sh?/usr/local/tomcat/bin/startup.sh tail?-f?/usr/local/tomcat/bin/catalina.sh
catalina.sh
################以上與原有tomcat默認配置文件一致################ 421???#touch?"$CATALINA_OUT" 422???if?[?"$1"?=?"-security"?]?;?then 423?????if?[?$have_tty?-eq?1?];?then 424???????echo?"Using?Security?Manager" 425?????fi 426?????shift 427?????eval?$_NOHUP?"\"$_RUNJAVA\""?"\"$LOGGING_CONFIG\""?$LOGGING_MANAGER?$JAVA_OPTS?$CATALINA_OPTS?\ 428???????-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\""?\ 429???????-classpath?"\"$CLASSPATH\""?\ 430???????-Djava.security.manager?\ 431???????-Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\""?\ 432???????-Dcatalina.base="\"$CATALINA_BASE\""?\ 433???????-Dcatalina.home="\"$CATALINA_HOME\""?\ 434???????-Djava.io.tmpdir="\"$CATALINA_TMPDIR\""?\ 435???????org.apache.catalina.startup.Bootstrap?"$@"?start?\ 436???????>>?"$CATALINA_OUT"?2>&1?"&" 437? 438???else 439?????eval?$_NOHUP?"\"$_RUNJAVA\""?"\"$LOGGING_CONFIG\""?$LOGGING_MANAGER?$JAVA_OPTS?$CATALINA_OPTS?\ 440???????-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\""?\ 441???????-classpath?"\"$CLASSPATH\""?\ 442???????-Dcatalina.base="\"$CATALINA_BASE\""?\ 443???????-Dcatalina.home="\"$CATALINA_HOME\""?\ 444???????-Djava.io.tmpdir="\"$CATALINA_TMPDIR\""?\ 445???????org.apache.catalina.startup.Bootstrap?"$@"?start?2>&1?|?/usr/local/sbin/cronolog?"$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out?>>?/dev/null?& 446? 447???fi ################以下與原有tomcat默認配置文件一致################
下面直接build鏡像就可以了。
創(chuàng)建一個configmap用于存放tomcat的server.xml文件。
kubectl?create?configmap?cm-server.xml?--from-file=‘server.xml的絕對路徑’
編寫k8s的yaml文件
apiVersion:?apps/v1 kind:?Deployment metadata: ??name:?dubbo-admin ??labels: ????app:?dubbo-admin spec: ??replicas:?1 ??selector: ????matchLabels: ??????app:?dubbo-admin ??template: ????metadata: ??????labels: ????????app:?dubbo-admin ????spec: ??????#?需要仔細說明的地方,這里我們創(chuàng)建了3個volume,分別存放tomcat的log、java項目代碼和一個使用configmap形式存放的tomcat配置文件(server.xml) ??????volumes: ??????-?name:?"code-war" ????????hostPath:? ?????????path:?"/Disk/data/tomcat/dubbo-admin/code/" ??????-?name:?"tomcat-log" ????????hostPath: ?????????path:?"/Disk/data/tomcat/dubbo-admin/log/" ??????-?name:?"serverxml" ????????configMap: ?????????name:?tomcat-dubbo-admin-server.xml ?????????items: ?????????-?key:?server.xml ???????????path:?server.xml ??????containers: ??????-?name:?dubbo-admin ????????#?容器使用剛剛build過的鏡像 ????????image:?fushuitong/tomcat:jdk7u21-tomcat7.0.77-cronolog1.6.2 ????????ports: ????????-?containerPort:?8080 ????????#掛載3個volume,掛載目錄如下 ????????volumeMounts: ????????-?name:?code-war ??????????mountPath:?/usr/local/tomcat/webapps ????????-?name:?tomcat-log ??????????mountPath:?/usr/local/tomcat/logs ????????-?name:?serverxml ??????????mountPath:?/configfile
直接創(chuàng)建這個Deployment即可。
創(chuàng)建一個service,把tomcat的端口應道node上,以供外面訪問,如果tomcat前面還有nginx,可以直接映射到clusterIP.使用nginx進行轉發(fā)即可。
變了service的yaml文件
apiVersion:?v1 kind:?Service metadata: ??name:?dubbo-admin spec: ??ports: ??-?port:?8080 ????nodePort:?32333 ????targetPort:?dubbo-admin ????protocol:?TCP ??selector: ????app:?dubbo-admin ??type:?NodePort
最后通過訪問任意node的ip的32333端口就能訪問到對應的tomca項目了。

文章標題:dockerk8s集群部署tomcat,使用一個鏡像,增加鏡像的復用性。
分享路徑:http://chinadenli.net/article36/gsgpsg.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供定制網站、響應式網站、營銷型網站建設、網站內鏈、品牌網站制作、服務器托管
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)