本文共 6692 字,大约阅读时间需要 22 分钟。
Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下普遍使用,是开发和调试JSP程序的首选。
Tomcat最初是Sun的软件架构师詹姆斯.邓肯.戴维森开发的。后来在他的帮助下Tomcat成为开源项目,并由Sun贡献给Apache软件基金会。 当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet。另外,Tomcat和IIS等web服务器一样,具有处理HTML页面的功能(但处理静态HTML的能力不如Apache),另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。 ① 设计Tomcat的Dockerfile 首先,尝试在Dockerhub上搜索Tomcat相关镜像的个数: [root@docker1 ~]# docker search tomcat |wc -l 26 可以看到,已经有26个相关镜像。如果是个人开发或测试,可以随意选择一个镜像,按照提示启动应用即可。 若准备在生产环境中使用,这些镜像都不是那么合适了。原因有三个方面: ◆ 项目需要的Tomcat版本可能不同 ◆ 项目需要的Tomcat变量不一致 ◆ 项目需要的JDK可能不一致 ② 因此,比较好的方式应该是由架构师通过Dockerfile或者其他方式构建好统一的镜像,然后分发给项目组成员来进行。 下面以sun_jdk 1.6、tomcat 7.0、centos 7.4为诶环境介绍如何定制自己的tomcat镜像。(1)准备工作:
创建tomcat7.0_jdk1.6文件夹,从www.oracle.com上下载sun_jdk 1.6压缩包,解压为jdk目录。 创建Dockerfile和run.sh文件 [root@docker1 ~]# mkdir tomcat7.0_jdk1.6 [root@docker1 ~]# cd tomcat7.0_jdk1.6/ [root@docker1 tomcat7.0_jdk1.6]# touch Dockerfile run.sh [root@docker1 tomcat7.0_jdk1.6]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.82/bin/apache-tomcat-7.0.82.zip --2017-11-27 22:31:47-- https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.82/bin/apache-tomcat-7.0.82.zip Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.6.178, 2402:f000:1:416:101:6:6:177 Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.6.178|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 9588812 (9.1M) [application/zip] Saving to: ‘apache-tomcat-7.0.82.zip’ 100%[================================================================================================================>] 9,588,812 3.38MB/s in 2.7s 2017-11-27 22:31:50 (3.38 MB/s) - ‘apache-tomcat-7.0.82.zip’ saved [9588812/9588812] 解压后,tomcat7.0_jdk1.6目录底下应如下所示(多余的压缩包已经被删除): [root@docker1 tomcat7.0_jdk1.6]# tar -xf apache-tomcat-7.0.82.zip[root@docker1 tomcat7.0_jdk1.6]# rz -y #上传jdk-6u45-linux-x64.bin包
[root@docker1 tomcat7.0_jdk1.6]# chmod 755 jdk-6u45-linux-x64.bin [root@docker1 tomcat7.0_jdk1.6]# ./jdk-6u45-linux-x64.bin [root@docker1 tomcat7.0_jdk1.6]# ls apache-tomcat-7.0.82 apache-tomcat-7.0.82.zip Dockerfile jdk1.6.0_45 jdk-6u45-linux-x64.bin jdk-6u45-linux-x64.zip run.sh [root@docker1 tomcat7.0_jdk1.6]# rm -f jdk-6u45-linux-x64.bin jdk-6u45-linux-x64.zip apache-tomcat-7.0.82.zip [root@docker1 tomcat7.0_jdk1.6]# ls apache-tomcat-7.0.82 Dockerfile jdk1.6.0_45 run.sh
(2)编写Dockerfile文件
#设置继承来自镜像
FROM docker.io/centos:latest
#下面是一些创建这的基本信息
MAINTAINER waitfish from dockerpool.com
#设置环境变量,所以操作都是非交互式的
ENV DEBIAN_FRONTEND noninteractive
RUN echo "Asia/Shanghai" > /etc/timezone
#注意这里要更改系统的时区设置,因为在Web应用中经常会用到时区这个系统变量,默认的centos会让你的应用程序发生不可思议的效果
#设置tomcat对的环境变量,若读者有其他的环境变量需要设置,也可以在这里添加:
ENV CATALINA_HOME /tomcat
ENV JAVA_HOME /jdk
#复制tomcat和jdk文件到镜像中
ADD apache-tomcat-7.0.82 /tomcat
ADD jdk1.6.0_45 /jdk
#复制启动脚本至镜像,并赋予脚本可执行权限
ADD run.sh /run.sh
RUN chmod +x /*.sh
RUN chmod +x /tomcat/bin/*.sh
#我的tomcat接口,默认为8080
EXPOSE 8080
#设置自启动命令
CMD ["/run.sh"]
(3)编写Dockerfile文件
[root@docker1 tomcat7.0_jdk1.6]# cat run.sh
#!/bin/bash
# 启动tomcat
exec ${CATALINA_HOME}/bin/catalina.sh run
#启动startup.sh
#catalina.sh是调试模式
(4)建立tomcat7.0:jdk1.6镜像
[root@docker1 tomcat7.0_jdk1.6]# docker build -t tomcat7.0:jdk1.6 .
[root@docker1 tomcat7.0_jdk1.6]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat7.0 jdk1.6 581265694089 6 seconds ago 439.8 MB
......
(5)启动一个tomcat容器进行测试
[root@docker1 tomcat7.0_jdk1.6]# docker run -d -P tomcat7.0:jdk1.6
ac6d662434ffb9435740d0f452599e12349903f4387775155f0d7e057eac6a33
(6)查看映射的端口信息:
[root@docker1 tomcat7.0_jdk1.6]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ac6d662434ff tomcat7.0:jdk1.6 "/run.sh" 21 minutes ago Up 21 minutes 0.0.0.0:32820->8080/tcp thirsty_montalcini
(7)在本地使用浏览器登录Tomcat管理界面,访问10.0.0.10:32820,如下图所示:
******************************************************************************************************************************************
******************************************************************************************************************************************
tomcat设置密码登录,参考 centos 使用 pwgen 生成高强度密码
(1)更改Dockerfile配置文件
[root@docker1 tomcat7.0_jdk1.6]# cat Dockerfile
#设置继承来自镜像
FROM docker.io/centos:latest
#下面是一些创建这的基本信息
MAINTAINER waitfish from dockerpool.com
#设置环境变量,所以操作都是非交互式的
ENV DEBIAN_FRONTEND noninteractive
RUN echo "Asia/Shanghai" > /etc/timezone
#注意这里要更改系统的时区设置,因为在Web应用中经常会用到时区这个系统变量,默认的centos会让你的应用程序发生不可思议的效果
#安装跟tomcat用户认证相关的软件<-------------修改处
RUN yum update -y
RUN yum install -y wget pwgen ca-certificates gcc automake autoconf libtool make && yum clean all
RUN tar -xf pwgen-2.08.tar.gz
WORKDIR pwgen-2.08
RUN ./configure && make && make install
#设置tomcat对的环境变量,若读者有其他的环境变量需要设置,也可以在这里添加:
ENV CATALINA_HOME /tomcat
ENV JAVA_HOME /jdk
#复制tomcat和jdk文件到镜像中
ADD apache-tomcat-7.0.82 /tomcat
ADD jdk1.6.0_45 /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"]
-----------------------------------------------------------------------------------------------------------------
[root@docker1 tomcat7.0_jdk1.6]# cat create_tomcat_admin_user.sh
#!/bin/bash
if [ -f /.tomcat_admin_created ]; then
echo "Tomcat '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_HOME}/conf/tomcat-users.xml
echo '<role rolename="manager-scipt"/>' >> ${CATALINA_HOME}/conf/tomcat-users.xml
echo '<role rolename="manager-jmx"/>' >> ${CATALINA_HOME}/conf/tomcat-users.xml
echo '<role rolename="admin-gui"/>' >> ${CATALINA_HOME}/conf/tomcat-users.xml
echo '<role rolename="admin-script"/>' >> ${CATALINA_HOME}/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-user>' >> ${CATALINA_HOME}/conf/tomcat-users.xml
echo "=> Done!"
touch /.tomcat_admin_created
echo "===================================================="
echo "You can now configure to this Tomcat serrver using:"
echo ""
echo " admin:${PASS}"
echo ""
echo "===================================================="
*********************************************************************************************
附件:
apache-tomcat-7.0.82
jdk-6u45-linux-x64.bin
pwgen-2.08.tar
本文转自 Mr_sheng 51CTO博客,原文链接:http://blog.51cto.com/sf1314/2045202
转载地址:http://cslzl.baihongyu.com/