Docker web应用服务之Tomcat

Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器。
当配置正确时,Apache 为 HTML 页面服务, Tomcat 实际上运行 JSP 页面和 Servlet 。另外,Tomcat 和 IIS 等 Web 服务器一样,具有处理 HTML 页面的功能(但处理静态 HTML 的能力不如 Apache), 另外它还是一个 Servlet 和 JSP 容器,独立的 Servlet 容器是 Tomcat 的默认模式。

设计 Tomcat 的 Dockerfile

在 Dockerfile 上搜索 Tomcat 相关镜像的个数:
# sudo docker search tomcat | wc -l

下面以 sun_jdk 1.6 、 Tomcat 7.0 、ubuntu 14.04 为环境介绍如何定制自己的 tomcat 镜像。

准备工作

创建 tomcat7.0_jdk1.6 文件夹,从 www.oracle.com 上下载 sun_jdk 1.6 压缩包,解压为 jdk 目录。
创建 Dockerfile 和 run.sh 文件:

mkdir tomcat7.0_jdk1.6
cd tomcat7.0_jdk1.6/
touch Dockerfile run.sh  jdk

下载 Tomcat, 可以到官网下载最亲折版本,也可以直接使用下面链接中给出的版本:

# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.82/bin/apache-tomcat-7.0.82.zip

解压后,tomcat7.0_jdk1.6 目录底下应如下所示
# ls
Dockerfile  run.sh apache-tomcat-7.0.82

Dockerfile 文件和其他脚本文件

Dockerfile 文件内容如下:

# 继承 我们创建的sshd 的镜像
FROM sshd:dockerfile
# 作者信息
MAINTAINER waitfish from dockerpool.com(dwj_zz@163.com)

# 设置环境变量,所有操作都是非交互式的
ENV DEBIAN_FRONTEND noninteractive

RUN echo "Asia/Shanghai" > /etc/timezone && \
                dpkg-reconfigure -f noninteractive tzdata
# 安装跟 tomcat 用户认证相关的软件
RUN apt-get install -yq --no-install-recommends wget pwgen ca-certificates && \
        apt-get clean && \
        rm -rf /var/lib/apt/lists/*
# 设置 tomcat 的环境变量
ENV CATALINA_HOME /tomcat
ENV JAVA_HOME /jdk

# 复制 tomcat 和 jdk 文件到镜像中
ADD apache-tomcat-7.0.82 /tomcat
ADD jdk /jdk

ADD create_tomcat_admin_user.sh /create_tomcat_admin_user.sh
ADD run.sh /run.sh
RUN chmod +x /*.sh
RUN chmod +x /tomcat/bin/*.sh

EXPOSE 8080
CMD ["/run.sh"]

创建 tomcat 用户和密码脚本文件 create_tomcat_admin_user.sh 文件,内容为:

#!/bin/bash

if [ -f /.tomcat_admin_created ] ; then
    echo "Tomat 'admin' user already created"
    exit 0
fi

# generate password
PASS=${TOMCAT_PASS:-$(pwgen -s 12 1)}
_word=$( [ ${TOMCAT_PASS} ] && echo "preset" || echo "random" )

echo "=> Creating and admin user with a ${_word} password in Tomcat"
sed -i -r 's/<\/tomcat-users>//' ${CATALINA_HOME}/conf/tomcat-users.xml

echo '<role rolename="manager-gui"/>' >> ${CATALINA_HMOE}/conf/tomcat-users.xml
echo '<role rolename="manager-script"/>' >> ${CATALINA_HMOE}/conf/tomcat-users.xml
echo '<role rolename="manager-jmx"/>' >> ${CATALINA_HMOE}/conf/tomcat-users.xml
echo '<role rolename="admin-gui"/>' >> ${CATALINA_HMOE}/conf/tomcat-users.xml
echo '<role rolename="admin-script"/>' >> ${CATALINA_HMOE}/conf/tomcat-users.xml
echo "<user username=\"admin\" password=\"${PASS}\" roles=\"manager-gui,manager-script, manager-jmx, admin-gui, admin-script\"/>" >> ${CATALINA_HOME} /conf/tomcat-users.xml
echo '</tomcat-users>' >> ${CATALINA_HOME}/conf/tomcat-users.xml
echo "=> Done!"
touch /.tomcat_admin_created

echo "================================================"
echo "You can now configure to this Tomcat server using:"
echo ""
echo "    admin:${PASS}"
echo ""
echo "================================================"

编写 run.sh 脚本文件,内容为:

#!/bin/bash
if [ ! -f /.tomcat_admin_created ]; then
    /creaate_tomcat_adin_user.sh
fi
/usr/sbin/sshd -D &
exec ${CATALINA_HOME}/bin/catalina.sh run

创建和测试镜像

通过下面的命令创建镜像 tomcat7.0:jdk1.6:

# sudo docker build -t tomcat7.0:jdk1.6 .

查看下目前本地的镜像:
# sudo docker images

启动一个  tomcat 容器进行测试
# sudo docker run -d -P tomcat7.0:jdk1.6

通过 docker logs 得到 tomcat 的密码 
# sudo docker logs 3cd
(3cd 是镜像的名称)

查看映射的端口信息:
# sudo docker ps

在本地使用浏览器登录  Tomcat 管理界面,访问http://127.0.0.1:49158 

49158 端口在 sudo docker ps 查看

注意 :

在实际环境中,可以通过使用 -V 参数来挂载 Tomcat 的日志文件、程序所在目录、以及与 Tomcat 相关的配置。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,639评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,277评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,221评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,474评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,570评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,816评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,957评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,718评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,176评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,511评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,646评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,322评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,934评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,755评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,987评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,358评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,514评论 2 348

推荐阅读更多精彩内容