麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 網(wǎng)站 > Apache > 正文

Docker自動(dòng)部署Apache Tomcat的方法

2024-08-27 18:30:54
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

介紹

本文會(huì)講述:

  1. 擴(kuò)展Tomcat的官方Dockerfile
  2. 構(gòu)建新的鏡像
  3. 從修改過(guò)的新鏡像啟動(dòng)容器
  4. 在容器里部署RESTful的Web服務(wù)并測(cè)試

Apache Tomcat

使用docker search可以查到最流行的(和官方的)Docker Tomcat容器:

$ sudo docker search tomcat[sudo] password for craig: NAME                 DESCRIPTION                   STARS   OFFICIAL  AUTOMATEDtomcat                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]h2000/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)簽:

Docker,自動(dòng)部署,Tomcat,Apache

我正在用的是版本7,所以選擇了tomcat:7。

我是使用Docker的新手(在寫這邊文章的時(shí)候),因此不想稱此文是“最佳實(shí)踐”。本文所寫的是我認(rèn)為好用的實(shí)踐,如果有不同意見(jiàn)也請(qǐng)告訴我。對(duì)于每一個(gè)想要啟動(dòng)的Docker容器,我都創(chuàng)建了自己的Dockerfile并且擴(kuò)展了鏡像。當(dāng)然也完全可以不擴(kuò)展鏡像,而直接使用它。不過(guò)基于目標(biāo)鏡像構(gòu)建我們自己的鏡像應(yīng)該是能穩(wěn)定擴(kuò)展別人工作成果的更合適的方式。

本文示例中,創(chuàng)建了一個(gè)簡(jiǎn)單的Dockerfile,如下:

FROM tomcat:7-jre7MAINTAINER "Craig Trim <[email protected]>"

用如下命令構(gòu)建鏡像:

$ sudo docker build -t craig/tomcat .

這樣擴(kuò)展的一個(gè)好處是簡(jiǎn)化了環(huán)境。最終,我要為Eclipse、MySQL和其它應(yīng)用使用容器。我會(huì)給每個(gè)應(yīng)用一個(gè)簡(jiǎn)化的命名空間和鏡像名稱。做項(xiàng)目的時(shí)候,我推薦使用項(xiàng)目的代碼名稱作為容器的命名空間。我也簡(jiǎn)化了標(biāo)簽名稱。這些都是很小的注意事項(xiàng),不過(guò)又很重要。在大型項(xiàng)目中,有很多開(kāi)發(fā)人員參與,這樣的方式就會(huì)很有幫助。通用的命名空間,簡(jiǎn)化的鏡像名稱和標(biāo)簽,會(huì)幫助項(xiàng)目成員更方便得使用官方項(xiàng)目鏡像。

我的示例如下:

tomcat:7-jre7  ns/tomcatmysql:5.6.23  ns/mysqlfgrehm/eclipse:v4.4.1  ns/eclipse

ns代表命名空間,每個(gè)項(xiàng)目成員都能理解。啟動(dòng)容器只需要記住項(xiàng)目代碼名(命名空間)和應(yīng)用名稱即可。

運(yùn)行Tomcat

如下命令會(huì)運(yùn)行Tomcat,并將容器的8080端口暴露到宿主機(jī)器的8080端口:

$ sudo docker run -p 8080:8080 craig/tomcat

如果還需要從這個(gè)鏡像啟動(dòng)容器,只需要:

$ sudo docker run -p 8081:8080 craig/tomcat

測(cè)試tomcat已經(jīng)啟動(dòng):

Docker,自動(dòng)部署,Tomcat,Apache

擴(kuò)展Dockerfile

我需要擴(kuò)展Dockerfile,來(lái)實(shí)現(xiàn)Maven的自動(dòng)部署。需要添加settings.xml,更新tomcat-user.xml文件。如下所示:

tomcat-users.xml:

<?xml version='1.0' encoding='utf-8'?><tomcat-users><role rolename="manager-gui"/><role rolename="manager-gui"/><role rolename="manager-script"/><user username="craig" password="password" roles="manager,manager-gui,manager-script" /></tomcat-users>

settings.xml:

<?xml version="1.0" encoding="UTF-8"?><settings><servers> <server><id>TomcatServer</id><username>craig</username><password>password</password></server> </servers>

這些文件和Dockerfile放在同一個(gè)目錄下。

Dockerfile更新為:

FROM tomcat:7-jre7MAINTAINER "Craig Trim <[email protected]>"ADD settings.xml /usr/local/tomcat/conf/ADD tomcat-users.xml /usr/local/tomcat/conf/

當(dāng)鏡像構(gòu)建時(shí),配置文件會(huì)被放置到正確目錄下。從這個(gè)鏡像啟動(dòng)的任意容器都會(huì)包含這些文件。

重構(gòu)鏡像

用之前的方法重新構(gòu)建鏡像:

$ sudo docker build -t craig/tomcat .Sending build context to Docker daemon 5.632 kBSending build context to Docker daemon Step 0 : FROM tomcat:7-jre7---> 77eb038c09d1Step 1 : MAINTAINER "Craig Trim <[email protected]>"---> Using cache---> cadc51a3054cStep 2 : ADD settings.xml /usr/local/tomcat/conf/---> Using cache---> 5009ba884f1fStep 3 : ADD tomcat-users.xml /usr/local/tomcat/conf/---> Using cache---> 33917c541bb5Successfully built 33917c541bb5

可以查看鏡像歷史:

$ sudo docker history craig/tomcatIMAGE        CREATED       CREATED BY                   SIZE33917c541bb5    4 hours ago     /bin/sh -c #(nop) ADD file:c1d08c42d5808537b4  1.761 kB5009ba884f1f    4 hours ago     /bin/sh -c #(nop) ADD file:5dd8f0f6d0cd64de3c  212 Bcadc51a3054c    4 hours ago     /bin/sh -c #(nop) MAINTAINER "Craig Trim <cra  0 B77eb038c09d1    3 weeks ago     /bin/sh -c #(nop) CMD [catalina.sh run]     0 Ba96609fc8364    3 weeks ago     /bin/sh -c #(nop) EXPOSE map[8080/tcp:{}]    0 Bca99125fbf51    3 weeks ago     /bin/sh -c curl -SL "$TOMCAT_TGZ_URL" -o tomc  13.63 MBe7ca14a4280a    3 weeks ago     /bin/sh -c #(nop) ENV TOMCAT_TGZ_URL=https://  0 Beac866e259d8    3 weeks ago     /bin/sh -c #(nop) ENV TOMCAT_VERSION=7.0.59   0 Bd391d657b53a    3 weeks ago     /bin/sh -c #(nop) ENV TOMCAT_MAJOR=7      0 B7b323fd1e0d3    3 weeks ago     /bin/sh -c gpg --keyserver pool.sks-keyserver  113.9 kB4412b8a11fb6    3 weeks ago     /bin/sh -c #(nop) WORKDIR /usr/local/tomcat   0 Bb4ec9d590927    3 weeks ago     /bin/sh -c mkdir -p "$CATALINA_HOME"      0 B681b802059fe    3 weeks ago     /bin/sh -c #(nop) ENV PATH=/usr/local/tomcat/  0 B11b245da4142    3 weeks ago     /bin/sh -c #(nop) ENV CATALINA_HOME=/usr/loca  0 B44faa7b2809f    3 weeks ago     /bin/sh -c apt-get update && apt-get install  164.5 MB42c3653e1b26    3 weeks ago     /bin/sh -c #(nop) ENV JAVA_DEBIAN_VERSION=7u7  0 B45ff981e92b4    3 weeks ago     /bin/sh -c #(nop) ENV JAVA_VERSION=7u75     0 B5e9b188bc82c    3 weeks ago     /bin/sh -c apt-get update && apt-get install  676 kB1073b544a1cb    3 weeks ago     /bin/sh -c apt-get update && apt-get install  44.34 MB50ec2d202fe8    3 weeks ago     /bin/sh -c #(nop) CMD [/bin/bash]        0 B3b3a4796eef1    3 weeks ago     /bin/sh -c #(nop) ADD file:fb7c52fc8e65391715  122.8 MB511136ea3c5a    21 months ago                            0 B

所做的變動(dòng)是四小時(shí)之前發(fā)生的。現(xiàn)在可以從修改過(guò)的鏡像啟動(dòng)容器,來(lái)測(cè)試自動(dòng)化部署。

部署到Tomcat

這可能應(yīng)該是另外一篇教程的主題,不過(guò)檢驗(yàn)Tomcat安裝是否成功的最佳方式就是部署一個(gè)WAR文件。我用Maven創(chuàng)建了一個(gè)簡(jiǎn)單的JavaEE項(xiàng)目,結(jié)構(gòu)如下:

$ tree.+-- pom.xml+-- src¦  +-- main¦  ¦  +-- java¦  ¦    +-- com¦  ¦      +-- trimc¦  ¦        +-- blogger

如下插件(在pom.xml文件里)指定了部署信息,包括暴露的端口和用戶名密碼:

<plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><url>http://localhost:8080/manager/text</url><server>TomcatServer</server><path>/sample</path><username>craig</username><password>password</password></configuration></plugin>

使用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=%2FtestUploaded: 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 _initiateINFO: 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 deployWARINFO: Deployment of web application archive /usr/local/tomcat/webapps/test.war has finished in 826 ms

輸出如下圖:

Docker,自動(dòng)部署,Tomcat,Apache

結(jié)論

什么是至關(guān)重要的?

我們不需要安裝Tomcat,而是需要在Dockerfile定義,然后從鏡像里啟動(dòng)容器。似乎看起來(lái)比下載Tomcat,解壓,運(yùn)行啟動(dòng)腳本要復(fù)雜一些。

這樣做帶來(lái)的好處包括:

  1. 不是所有應(yīng)用都像Tomcat一樣易于安裝。
  2. 幾乎所有應(yīng)用在安裝后都需要額外的配置。

Docker的作用有點(diǎn)類似Vagrant/Puppet/Chef/Ansible等。需要寫一個(gè)腳本定義環(huán)境,之后build工具就可以自動(dòng)搭建出環(huán)境。在這里Docker的優(yōu)勢(shì)顯而易見(jiàn),那就是比虛擬機(jī)更為輕量。大多數(shù)情況下,就為了使用Tomcat而占用整個(gè)虛擬機(jī)會(huì)造成資源的浪費(fèi)。而且很多程序員是在筆記本上工作,也很難同時(shí)啟動(dòng)多個(gè)虛擬機(jī)。

這也就是Docker的第三個(gè)好處:可以從同一個(gè)鏡像啟動(dòng)多個(gè)容器。啟動(dòng)多個(gè)容器所占用的資源比啟動(dòng)多個(gè)虛擬機(jī)要少得多,啟動(dòng)時(shí)間也非常快。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到服務(wù)器教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美成年人视频在线观看 | 8x成人在线电影 | 久草视频国产在线 | 精品亚洲夜色av98在线观看 | 免费观看一级黄色片 | 久久99精品久久久久久秒播放器 | 国产分类视频 | 欧美一级不卡视频 | 国产在线观看一区二区三区 | av在线免费电影 | 国内精品久久久久久久影视红豆 | 在线观看国产网站 | chinesexxx少妇露脸| 热99精品视频 | 国产亚洲自拍一区 | 色日本视频 | 一级大片在线观看 | 沉沦的校花奴性郑依婷c到失禁 | 爱福利视频网 | 久草影音 | 精品国产一区二 | 国产91大片| 国产精品爱久久久久久久 | 亚洲精品欧美二区三区中文字幕 | 午夜小电影 | 99精品视频免费看 | 性少妇chinesevideo | 午夜精品成人一区二区 | 久久久久久三区 | 男人久久天堂 | 久久欧美亚洲另类专区91大神 | 在线成人一区二区 | 亚洲第一页在线观看 | 一级成人欧美一区在线观看 | 日韩激情在线视频 | 亚洲综合无码一区二区 | www国产免费 | 免费a网 | 成人福利免费在线观看 | 亚洲成人在线视频网 | 久久国产精品免费视频 |