亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > Apache > 正文

Docker自動部署Apache Tomcat的方法

2024-08-27 18:30:54
字體:
來源:轉載
供稿:網友

介紹

本文會講述:

  1. 擴展Tomcat的官方Dockerfile
  2. 構建新的鏡像
  3. 從修改過的新鏡像啟動容器
  4. 在容器里部署RESTful的Web服務并測試

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]

官方網站描述了所支持的標簽:

Docker,自動部署,Tomcat,Apache

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

我是使用Docker的新手(在寫這邊文章的時候),因此不想稱此文是“最佳實踐”。本文所寫的是我認為好用的實踐,如果有不同意見也請告訴我。對于每一個想要啟動的Docker容器,我都創建了自己的Dockerfile并且擴展了鏡像。當然也完全可以不擴展鏡像,而直接使用它。不過基于目標鏡像構建我們自己的鏡像應該是能穩定擴展別人工作成果的更合適的方式。

本文示例中,創建了一個簡單的Dockerfile,如下:

FROM tomcat:7-jre7MAINTAINER "Craig Trim <craigtrim@gmail.com>"

用如下命令構建鏡像:

$ sudo docker build -t craig/tomcat .

這樣擴展的一個好處是簡化了環境。最終,我要為Eclipse、MySQL和其它應用使用容器。我會給每個應用一個簡化的命名空間和鏡像名稱。做項目的時候,我推薦使用項目的代碼名稱作為容器的命名空間。我也簡化了標簽名稱。這些都是很小的注意事項,不過又很重要。在大型項目中,有很多開發人員參與,這樣的方式就會很有幫助。通用的命名空間,簡化的鏡像名稱和標簽,會幫助項目成員更方便得使用官方項目鏡像。

我的示例如下:

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

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

運行Tomcat

如下命令會運行Tomcat,并將容器的8080端口暴露到宿主機器的8080端口:

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

如果還需要從這個鏡像啟動容器,只需要:

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

測試tomcat已經啟動:

Docker,自動部署,Tomcat,Apache

擴展Dockerfile

我需要擴展Dockerfile,來實現Maven的自動部署。需要添加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放在同一個目錄下。

Dockerfile更新為:

FROM tomcat:7-jre7MAINTAINER "Craig Trim <craigtrim@gmail.com>"ADD settings.xml /usr/local/tomcat/conf/ADD tomcat-users.xml /usr/local/tomcat/conf/

當鏡像構建時,配置文件會被放置到正確目錄下。從這個鏡像啟動的任意容器都會包含這些文件。

重構鏡像

用之前的方法重新構建鏡像:

$ 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 <craigtrim@gmail.com>"---> 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

所做的變動是四小時之前發生的?,F在可以從修改過的鏡像啟動容器,來測試自動化部署。

部署到Tomcat

這可能應該是另外一篇教程的主題,不過檢驗Tomcat安裝是否成功的最佳方式就是部署一個WAR文件。我用Maven創建了一個簡單的JavaEE項目,結構如下:

$ 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,自動部署,Tomcat,Apache

結論

什么是至關重要的?

我們不需要安裝Tomcat,而是需要在Dockerfile定義,然后從鏡像里啟動容器。似乎看起來比下載Tomcat,解壓,運行啟動腳本要復雜一些。

這樣做帶來的好處包括:

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

Docker的作用有點類似Vagrant/Puppet/Chef/Ansible等。需要寫一個腳本定義環境,之后build工具就可以自動搭建出環境。在這里Docker的優勢顯而易見,那就是比虛擬機更為輕量。大多數情況下,就為了使用Tomcat而占用整個虛擬機會造成資源的浪費。而且很多程序員是在筆記本上工作,也很難同時啟動多個虛擬機。

這也就是Docker的第三個好處:可以從同一個鏡像啟動多個容器。啟動多個容器所占用的資源比啟動多個虛擬機要少得多,啟動時間也非??臁?/p>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91av免费观看91av精品在线| 日韩欧美黄色动漫| 亚洲色图欧美制服丝袜另类第一页| 日韩久久精品电影| 日韩在线视频观看正片免费网站| 成人欧美一区二区三区在线| 亚洲aⅴ男人的天堂在线观看| 俺去啦;欧美日韩| 国产精品久久久av| 一区二区三区四区在线观看视频| 精品视频久久久久久久| 大伊人狠狠躁夜夜躁av一区| 韩国美女主播一区| 91在线色戒在线| 久久久免费av| 国产欧美 在线欧美| 亚洲国产精彩中文乱码av在线播放| 国内精品国产三级国产在线专| 日韩av在线天堂网| 亚洲精品久久久久久久久久久| 亚洲国产欧美一区二区三区久久| 久久精品影视伊人网| 日韩精品在线免费观看视频| 少妇高潮久久久久久潘金莲| 欧美性xxxx18| 日韩成人免费视频| 欧美交受高潮1| 精品久久中文字幕| 国产精品入口尤物| 久久久久一本一区二区青青蜜月| 色婷婷综合久久久久中文字幕1| 成人免费在线视频网址| 538国产精品一区二区免费视频| 亚洲精品欧美一区二区三区| 国产精品27p| 日韩av在线电影网| 国产亚洲精品久久| 亚洲free性xxxx护士白浆| 亚洲三级黄色在线观看| 韩国国内大量揄拍精品视频| 国产成人精品视| www.日韩不卡电影av| 色视频www在线播放国产成人| 国产精品视频播放| 亚洲人成人99网站| 欧美日韩美女在线| 伊人久久久久久久久久| 国产精品久久久久久久久久免费| 久久久亚洲天堂| 欧美国产日韩一区二区三区| 欧美又大又硬又粗bbbbb| 都市激情亚洲色图| 色综合老司机第九色激情| 亚洲欧美中文字幕在线一区| 日韩免费视频在线观看| 国产精品吹潮在线观看| 亚洲偷熟乱区亚洲香蕉av| 日韩有码在线播放| 日本欧美一二三区| 茄子视频成人在线| 日韩在线观看免费全| 日韩免费av片在线观看| 国产在线精品成人一区二区三区| 亚洲欧美一区二区三区四区| 国产精品户外野外| 亚洲国产欧美一区二区三区同亚洲| 午夜精品久久久久久久99热| 自拍偷拍亚洲精品| 亚洲最大福利视频网| 久久九九有精品国产23| 日韩av一卡二卡| 国模私拍视频一区| 久久久久久久久久国产精品| 亚洲色图五月天| 欧美大全免费观看电视剧大泉洋| 亚洲欧美中文日韩v在线观看| 日本久久精品视频| 久久免费视频在线| 国产成人av在线播放| 国产精品久久久久久久天堂| 久久亚洲欧美日韩精品专区| 亚洲老头老太hd| 91精品国产高清自在线| 久久露脸国产精品| 91美女片黄在线观| 国产成人免费91av在线| 欧美成人剧情片在线观看| 亚洲精品v欧美精品v日韩精品| 狠狠躁夜夜躁人人爽天天天天97| 91亚洲午夜在线| 久热在线中文字幕色999舞| 久久综合九色九九| 欧美日韩在线另类| 国产精品一区二区久久久| 欧美性猛交xxxx免费看| 高清一区二区三区四区五区| 黑人巨大精品欧美一区免费视频| 国产亚洲精品va在线观看| 91精品在线观| 成人激情综合网| 中文字幕欧美亚洲| 国产精品久久久久久久天堂| 欧美激情一级欧美精品| 91成人天堂久久成人| 国产精品久久久久秋霞鲁丝| 亚洲男人天堂2024| 国产自产女人91一区在线观看| 超碰精品一区二区三区乱码| 97欧美精品一区二区三区| 欧美激情视频一区二区| 夜夜嗨av色一区二区不卡| 精品亚洲精品福利线在观看| 日韩电影免费在线观看中文字幕| 精品国产一区二区三区四区在线观看| 青青草精品毛片| 久久精品99国产精品酒店日本| 欧美视频中文字幕在线| 91精品视频免费观看| 三级精品视频久久久久| 国产国语videosex另类| 欧美日韩国产丝袜另类| 亚洲自拍欧美另类| 欧美精品18videosex性欧美| 亚洲成人黄色网| 国产精品久久久久免费a∨| 欧美激情手机在线视频| 亚洲精品aⅴ中文字幕乱码| 久久久电影免费观看完整版| 亚洲欧美国产精品久久久久久久| 91免费视频国产| 国产999精品久久久影片官网| 日韩黄在线观看| 久久成人18免费网站| 久久国产精品久久久久久久久久| 97在线视频免费播放| 成人写真视频福利网| 91久久精品一区| 欧美久久精品午夜青青大伊人| 亚洲国产日韩欧美综合久久| 午夜欧美不卡精品aaaaa| 国产日韩一区在线| 精品人伦一区二区三区蜜桃网站| 欧美性猛交xxxx免费看久久久| 九九热精品视频国产| 中文.日本.精品| 97视频网站入口| 免费av一区二区| 国产精品美女在线| 色yeye香蕉凹凸一区二区av| 亚洲成人动漫在线播放| 成人福利网站在线观看| 蜜臀久久99精品久久久久久宅男| 亚洲人成电影在线播放| 国产69久久精品成人看| 色偷偷9999www| 日韩免费观看网站| 欧美日韩国内自拍| 久久91超碰青草是什么| 亚洲视频欧美视频| 欧美夜福利tv在线| 亚洲欧美成人精品| 国产精品久久久久久久久免费| 一区二区三区高清国产| 久久黄色av网站|