寫(xiě)在前面
1.關(guān)于docker+k8s的的搭建方法及過(guò)程,請(qǐng)參考前一篇博客
2.我們使用的架構(gòu)是duboo的架構(gòu)模式。所有的應(yīng)用除tomcat和jar以外都啟動(dòng)到虛擬機(jī)上。
使用容器啟動(dòng)tomcat
因?yàn)槭褂萌萜鲉?dòng)項(xiàng)目,必須要有進(jìn)程跑在前臺(tái),不然容器run起來(lái)后會(huì)自動(dòng)退出。所以我們對(duì)tomcat的官方鏡像進(jìn)行了二次的build并做了自己的一些配置。
tomcat的官方鏡像啟動(dòng)容器后,tomcat的日志是放到了前臺(tái)打印出來(lái)了,并且無(wú)法做日志切割。容器退出后日志隨之丟失。我們來(lái)解決這兩個(gè)問(wèn)題。
問(wèn)題一: 日志切割
首先在容器中編譯安裝cronolog工具。但是安裝cronolog之前需要系統(tǒng)安裝gcc軟件,tomcat官方提供的鏡像很干凈,并沒(méi)有g(shù)cc需要我們首先先安裝一下gcc 同時(shí)還要安裝一下make。
問(wèn)題二:解決日志輸出在前臺(tái)的問(wèn)題。
tomcat官方鏡像啟動(dòng)容器的方式是catalina.sh run的方式來(lái)啟動(dòng)的。這樣啟動(dòng)log直接輸出在前臺(tái),可以保證容器不退出。但是我們目的是把日志放到本地。
我們給tomcat的換一種啟動(dòng)方式,自己寫(xiě)一個(gè)start.sh的腳本,內(nèi)容如下:
#!/bin/sh sh?/usr/local/tomcat/bin/startup.sh tail?-f?/usr/local/tomcat/bin/catalina.sh
因?yàn)槿绻苯邮褂胹tartup.sh 方式啟動(dòng)tomcat,會(huì)導(dǎo)致前臺(tái)沒(méi)有進(jìn)程在運(yùn)行,會(huì)導(dǎo)致容器退出,所以我們后面加一條tail -f的命令。tail那個(gè)文件隨便寫(xiě)一個(gè)就行了。
這樣能確保了tomcat的日志即做了日志切割同時(shí)又保存在了后臺(tái)。
Dockerfile的文件內(nèi)容如下:
FROM?tomcat:7.0-slim LABEL?maintainer="ZhiYu?Xin<894747821@qq.com>" ADD?./catalina.sh?/usr/local/tomcat/bin/ ADD?./cronolog-1.6.2.tar.gz?/opt/ ADD?./start.sh?/usr/local/tomcat/bin/ WORKDIR?/opt/cronolog-1.6.2 RUN?echo?"deb?http://ftp.us.debian.org/debian/?jessie?main?contrib?non-free"?>>?\ ????/etc/apt/sources.list?&&?echo?"deb-src?http://ftp.us.debian.org/debian/?jessie?main?contrib?non-free"?\ ????????>>?/etc/apt/sources.list?&&?apt-get?update?-y?&&?apt-get?install?-y?gcc-4.8?g++-4.8?g++-4.8-multilib?make?&&?\ ????????./configure?&&?make?&&?make?install?&&?chmod?a+x?/usr/local/tomcat/bin/start.sh EXPOSE?8080 ENTRYPOINT?["/bin/sh",?"/usr/local/tomcat/bin/start.sh"?]
問(wèn)題三:如何把容器輸出的日志直接存放到docker的宿主機(jī)上。
我們需要在啟動(dòng)容器的時(shí)候,給容器掛載一個(gè)volume到/usr/local/tomcat/logs目錄下就可以了。
啟動(dòng)容器之前最好在本地創(chuàng)建出對(duì)應(yīng)的目錄來(lái)。
啟動(dòng)容器的yml內(nèi)容如下:
apiVersion:?apps/v1 kind:?Deployment metadata: ??name:?tomcat ??labels: ????app:?tomcat spec: ??replicas:?1 ??selector: ????matchLabels: ??????app:?tomcat ??template: ????metadata: ??????labels: ????????app:?tomcat ????spec: ??????#聲明一個(gè)volume以供后面使用 ??????volumes: ??????-?name:?"tomcat-log" ????????hostPath: ??????????path:?"/data" ??????containers: ??????-?name:?tomcat1 ????????image:?xinsir8/tomcat:v1 ????????ports: ????????-?containerPort:?8080 ????????#?掛載一個(gè)volume ????????volumeMounts: ????????#?掛載到哪個(gè)目錄 ?????????-?mountPath:?/usr/local/tomcat/logs ???????????name:?tomcat-log ????????#?資源限制 ????????resources: ?????????requests: ??????????memory:?"64Mi" ??????????cpu:?"250m" ?????????limits: ??????????memory:?"128Mi" ??????????cpu:?"500m"
問(wèn)題四:如何解決網(wǎng)絡(luò)問(wèn)題,nginx調(diào)度和tomcat的通訊,tomcat和jar的通訊等。
其實(shí)很簡(jiǎn)單解決這個(gè)問(wèn)題,我們創(chuàng)建一個(gè)service就能解決這個(gè)問(wèn)題了。創(chuàng)建service的yml文件內(nèi)容如下
apiVersion:?v1 kind:?Service metadata: ?#?service的名字 ?name:?tomcat-service spec: ?#?service的類(lèi)型,類(lèi)型包括但不限于【NodePort、ClusterIP、NodePort、LoadBalancer】 ?type:?NodePort ?ports: ?#?容器的端口 ?-?port:?8080 ?#?映射后的端口 ???nodePort:?31003 ?selector: ?#?這個(gè)服務(wù)會(huì)被應(yīng)用到標(biāo)簽為app等于tomcat的所有容器上 ??app:?tomcat
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
新聞名稱(chēng):Docker+k8s+微服務(wù)部署方案-創(chuàng)新互聯(lián)
文章URL:http://chinadenli.net/article8/dgjiop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、商城網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、搜索引擎優(yōu)化、全網(wǎng)營(yíng)銷(xiāo)推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容