這篇文章主要為大家展示了“Docker如何自動部署Apache Tomcat”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Docker如何自動部署Apache Tomcat”這篇文章吧。
昌寧ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
Apache Tomcat
使用docker search可以查到最流行的(和官方的)Docker Tomcat容器:
$ sudo docker search tomcat [sudo] password for craig: NAME DESCRIPTION STARS OFFICIAL AUTOMATED tomcat Apache Tomcat is an open source implementa... 103 [OK] tutum/tomcat Tomcat image - listens in port 8080. For t... 38 [OK] consol/tomcat-7.0 Tomcat 7.0.57, 8080, "admin/admin" 12 [OK] consol/tomcat-8.0 Tomcat 8.0.15, 8080, "admin/admin" 9 [OK] consol/tomcat-6.0 Tomcat 6.0.43, 8080, "admin/admin" 6 [OK] consol/tomcat-4.1 Tomcat 4.1.40, 8080, "admin/admin" 4 [OK] consol/tomcat-5.0 Tomcat 5.0.30, 8080, "admin/admin" 4 [OK] consol/tomcat-5.5 Tomcat 5.5.36, 8080, "admin/admin" 4 [OK] consol/tomcat-3.3 Tomcat 3.3.2, 8080, "admin/admin" 4 [OK] readytalk/tomcat-native Debian backed Tomcat + Tomcat Native Library 3 [OK] malderhout/tomcat Tomcat7 with OpenJDK7 on CentOS7 3 [OK] dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 ba... 3 [OK] meirwa/spring-boot-tomcat-MySQL-app a sample spring-boot app using tomcat and ... 2 [OK] h3000/docker-tomcat-youtrack Dockerfile for youtrack to run under tomcat. 1 [OK] nicescale/tomcat Tomcat service for NiceScale. http://nices... 1 [OK] dmean/liferay-tomcat Debian + Liferay CE Tomcat 1 [OK] atomi/tomcat 0 [OK] mminke/apache-tomcat A Docker image which contains the Apache T... 0 [OK] ericogr/tomcat Tomcat 8.0.21, 8080, "docker/docker" 0 [OK] holmes/tomcat 0 [OK] paulkling/tomcat 0 [OK] dynamind/tomcat 0 [OK] fabric8/tomcat-8.0 runs Apache Tomcat 8.0 with jolokia enable... 0 [OK] learninglayers/tomcat 0 [OK] dmglab/tomcat CentOS 7 based tomcat installation 0 [OK]
官方網(wǎng)站描述了所支持的標(biāo)簽:
我正在用的是版本7,所以選擇了tomcat:7。
我是使用Docker的新手(在寫這邊文章的時候),因此不想稱此文是“最佳實踐”。本文所寫的是我認(rèn)為好用的實踐,如果有不同意見也請告訴我。對于每一個想要啟動的Docker容器,我都創(chuàng)建了自己的Dockerfile并且擴(kuò)展了鏡像。當(dāng)然也完全可以不擴(kuò)展鏡像,而直接使用它。不過基于目標(biāo)鏡像構(gòu)建我們自己的鏡像應(yīng)該是能穩(wěn)定擴(kuò)展別人工作成果的更合適的方式。
本文示例中,創(chuàng)建了一個簡單的Dockerfile,如下:
FROM tomcat:7-jre7 MAINTAINER "Craig Trim"
用如下命令構(gòu)建鏡像:
$ sudo docker build -t craig/tomcat .
這樣擴(kuò)展的一個好處是簡化了環(huán)境。最終,我要為Eclipse、MySQL和其它應(yīng)用使用容器。我會給每個應(yīng)用一個簡化的命名空間和鏡像名稱。做項目的時候,我推薦使用項目的代碼名稱作為容器的命名空間。我也簡化了標(biāo)簽名稱。這些都是很小的注意事項,不過又很重要。在大型項目中,有很多開發(fā)人員參與,這樣的方式就會很有幫助。通用的命名空間,簡化的鏡像名稱和標(biāo)簽,會幫助項目成員更方便得使用官方項目鏡像。
我的示例如下:
tomcat:7-jre7 ns/tomcat mysql:5.6.23 ns/mysql fgrehm/eclipse:v4.4.1 ns/eclipse
ns代表命名空間,每個項目成員都能理解。啟動容器只需要記住項目代碼名(命名空間)和應(yīng)用名稱即可。
運行Tomcat
如下命令會運行Tomcat,并將容器的8080端口暴露到宿主機(jī)器的8080端口:
$ sudo docker run -p 8080:8080 craig/tomcat
如果還需要從這個鏡像啟動容器,只需要:
$ sudo docker run -p 8081:8080 craig/tomcat
測試tomcat已經(jīng)啟動:
擴(kuò)展Dockerfile
我需要擴(kuò)展Dockerfile,來實現(xiàn)Maven的自動部署。需要添加settings.xml,更新tomcat-user.xml文件。如下所示:
tomcat-users.xml:
settings.xml:
TomcatServer craig password
這些文件和Dockerfile放在同一個目錄下。
Dockerfile更新為:
FROM tomcat:7-jre7 MAINTAINER "Craig Trim" ADD settings.xml /usr/local/tomcat/conf/ ADD tomcat-users.xml /usr/local/tomcat/conf/
當(dāng)鏡像構(gòu)建時,配置文件會被放置到正確目錄下。從這個鏡像啟動的任意容器都會包含這些文件。
重構(gòu)鏡像
用之前的方法重新構(gòu)建鏡像:
$ sudo docker build -t craig/tomcat . Sending build context to Docker daemon 5.632 kB Sending build context to Docker daemon Step 0 : FROM tomcat:7-jre7 ---> 77eb038c09d1 Step 1 : MAINTAINER "Craig Trim" ---> Using cache ---> cadc51a3054c Step 2 : ADD settings.xml /usr/local/tomcat/conf/ ---> Using cache ---> 5009ba884f1f Step 3 : ADD tomcat-users.xml /usr/local/tomcat/conf/ ---> Using cache ---> 33917c541bb5 Successfully built 33917c541bb5
可以查看鏡像歷史:
$ sudo docker history craig/tomcat IMAGE CREATED CREATED BY SIZE 33917c541bb5 4 hours ago /bin/sh -c #(nop) ADD file:c1d08c42d5808537b4 1.761 kB 5009ba884f1f 4 hours ago /bin/sh -c #(nop) ADD file:5dd8f0f6d0cd64de3c 212 B cadc51a3054c 4 hours ago /bin/sh -c #(nop) MAINTAINER "Craig Trim所做的變動是四小時之前發(fā)生的?,F(xiàn)在可以從修改過的鏡像啟動容器,來測試自動化部署。
部署到Tomcat
這可能應(yīng)該是另外一篇教程的主題,不過檢驗Tomcat安裝是否成功的最佳方式就是部署一個WAR文件。我用Maven創(chuàng)建了一個簡單的JavaEE項目,結(jié)構(gòu)如下:
$ tree . +-- pom.xml +-- src ¦ +-- main ¦ ¦ +-- java ¦ ¦ +-- com ¦ ¦ +-- trimc ¦ ¦ +-- blogger如下插件(在pom.xml文件里)指定了部署信息,包括暴露的端口和用戶名密碼:
org.apache.tomcat.maven tomcat7-maven-plugin 2.2 http://localhost:8080/manager/text TomcatServer /sample craig password 使用Maven將其部署到Tomcat:
$ mvn tomcat7:deploy [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Test Runtime 1.0.0 [INFO] ------------------------------------------------------------------------ [INFO] *** SNIP *** [INFO] --- tomcat7-maven-plugin:2.2:deploy (default-cli) @ sandbox-web2 --- [INFO] Deploying war to http://localhost:8080/test Uploading: http://localhost:8080/manager/text/deploy?path=%2Ftest Uploaded: http://localhost:8080/manager/text/deploy?path=%2Ftest (1352 KB at 18512.6 KB/sec) [INFO] tomcatManager status code:200, ReasonPhrase:OK [INFO] OK - Deployed application at context path /test [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.495 s [INFO] Finished at: 2015-03-31T19:08:12-07:00 [INFO] Final Memory: 15M/506M [INFO] ------------------------------------------------------------------------Tomcat日志顯示如下:
Apr 01, 2015 2:08:12 AM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFO: Initiating Jersey application, version 'Jersey: 1.9 09/02/2011 11:17 AM' Apr 01, 2015 2:08:12 AM org.apache.catalina.startup.HostConfig deployWAR INFO: Deployment of web application archive /usr/local/tomcat/webapps/test.war has finished in 826 ms輸出如下圖:
結(jié)論
什么是至關(guān)重要的?
我們不需要安裝Tomcat,而是需要在Dockerfile定義,然后從鏡像里啟動容器。似乎看起來比下載Tomcat,解壓,運行啟動腳本要復(fù)雜一些。
這樣做帶來的好處包括:
不是所有應(yīng)用都像Tomcat一樣易于安裝。
幾乎所有應(yīng)用在安裝后都需要額外的配置。
Docker的作用有點類似Vagrant/Puppet/Chef/Ansible等。需要寫一個腳本定義環(huán)境,之后build工具就可以自動搭建出環(huán)境。在這里Docker的優(yōu)勢顯而易見,那就是比虛擬機(jī)更為輕量。大多數(shù)情況下,就為了使用Tomcat而占用整個虛擬機(jī)會造成資源的浪費。而且很多程序員是在筆記本上工作,也很難同時啟動多個虛擬機(jī)。
這也就是Docker的第三個好處:可以從同一個鏡像啟動多個容器。啟動多個容器所占用的資源比啟動多個虛擬機(jī)要少得多,啟動時間也非???。
以上是“Docker如何自動部署Apache Tomcat”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
新聞名稱:Docker如何自動部署ApacheTomcat
本文來源:http://weahome.cn/article/gjpsih.html