1 基础知识
– Tomcat服务是一个开源免费的WEB应用服务器
– Tomcat属于轻量级应用服务器(适用于中小型低并发环境)
– Tomcat是开发和调试JSP程序额首先
– Tomcat实际上是Apache服务器的扩展(独立运行)
另外,本章建议你掌握JDK的部署与Tomcat的部署,
2 最佳实践
2.1 部署前的准备
2.1.1 部署Docker环境
本章使用如下Docker环境部署,参阅本章建议你先搭建以下Docker集群环境并熟悉,
2.1.2 准备系统镜像
In docker01
cd /data/docker/images/ docker load -i centos_centos7.3.1611.tar docker tag centos:centos7.3.1611 docker01.cmdschool.org:5000/centos:centos7.3.1611 docker push docker01.cmdschool.org:5000/centos:centos7.3.1611 docker image rm centos:centos7.3.1611
另外,安装包的离线下载请在能上网的docker环境的机器上使用如下命令,
docker pull centos:centos7.3.1611 docker save centos:centos7.3.1611 -o centos_centos7.3.1611.tar
另外,其他版本请从以下链接下载,
https://hub.docker.com/_/centos
2.1.3 下载JDK二进制安装包
cd ~ wget http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u65-linux-x64.tar.gz?AuthParam=1479977626_06aed8a715c8fbbc10f72c89ee38910b -O jdk-8u65-linux-x64.tar.gz
以上只是演示,如果不能下载请从JDK历史版本下载,
https://www.oracle.com/technetwork/java/javase/archive-139210.html
更新版本的JDK下载页面请参阅,
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2.1.4 下载Tomcat软件包
cd ~ wget https://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.58/bin/apache-tomcat-8.5.58.tar.gz
以上仅仅是演示,如果不能下载或需要其他版本,请从官网下载,
http://tomcat.apache.org/
2.2 创建Tomcat镜像
2.2.1 创建镜像项目文件夹
mkdir -p ~/imageProject-apache-tomcat-8.5.58
2.2.2 创建Dockerfile
vim ~/imageProject-apache-tomcat-8.5.58/Dockerfile
加入如下配置,
FROM docker01.cmdschool.org:5000/centos:centos7.3.1611 MAINTAINER will@cmdschool.org # Install Tools RUN yum install -y net-tools gcc gcc-c++ make expat-devel libcap-devel RUN rm -rf /var/cache/yum/* # Deploy Java jdk COPY jdk1.8.0_65 /usr/java/jdk1.8.0_65 ENV JAVA_HOME=/usr/java/jdk1.8.0_65 ENV JRE_HOME=${JAVA_HOME}/jre ENV CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib ENV PATH=${JAVA_HOME}/bin:$PATH # Deploy Tomcat ENV TOMCAT_HOME=/usr/tomcat COPY apache-tomcat-8.5.58 ${TOMCAT_HOME} RUN echo 'JAVA_HOME=/usr/java/jdk1.8.0_65' > ${TOMCAT_HOME}/bin/setenv.sh RUN echo 'JRE_HOME=${JAVA_HOME}/jre' >> ${TOMCAT_HOME}/bin/setenv.sh RUN echo 'CATALINA_HOME=/usr/tomcat' >> ${TOMCAT_HOME}/bin/setenv.sh RUN echo 'CATALINA_BASE=${CATALINA_HOME}' >> ${TOMCAT_HOME}/bin/setenv.sh RUN echo "JAVA_OPTS='-server -Xms2048m -Xmx4096m -Xss512k'" >> ${TOMCAT_HOME}/bin/setenv.sh RUN echo 'TOMCAT_USER=tomcat' >> ${TOMCAT_HOME}/bin/setenv.sh WORKDIR ${TOMCAT_HOME}/bin RUN tar -xf commons-daemon-native.tar.gz WORKDIR ${TOMCAT_HOME}/bin/commons-daemon-1.2.2-native-src/unix RUN ./configure RUN make RUN cp jsvc ${TOMCAT_HOME}/bin RUN echo '#!/bin/bash' > /root/start.sh RUN echo 'echo "Starting Tomcat Server...";' >> /root/start.sh RUN echo 'cd ${TOMCAT_HOME}/bin/' >> /root/start.sh RUN echo './daemon.sh run' >> /root/start.sh RUN chmod +x /root/start.sh EXPOSE 8080 WORKDIR /root CMD ["/bin/bash","./start.sh"]
“FROM”指令声明基于“centos:centos7.3.1611”镜像打包
“COPY”指令声明复制当前目录的具体文件到打包的镜像
“ENV”指令声明JAVA JDK或Tomcat所需的环境变量
“RUN”指令声明容器环境执行的命令
“EXPOSE ”指令声明容器使用的端口
“WORKDIR”指令声明切换容器内部的某个目录
“CMD”指令声明启动容器执行的启动服务命令
所以我们需要根据定义的文件准备需要复制的文件,
cd ~ tar -xf jdk-8u65-linux-x64.tar.gz -C ~/imageProject-apache-tomcat-8.5.58/ tar -xf apache-tomcat-8.5.58.tar.gz -C ~/imageProject-apache-tomcat-8.5.58/
确认所需的文件存在,
ls ~/imageProject-apache-tomcat-8.5.58/
可见如下显示,
apache-tomcat-8.5.58 Dockerfile jdk1.8.0_65
2.2.3 执行打包操作
cd ~/imageProject-apache-tomcat-8.5.58/ docker build -t apache-tomcat:8.5.58 .
以上“.”指当前目录为编译目录,编译程序会自动加载“Dockerfile”文件定义,可见如下显示,
Sending build context to Docker daemon 382.2MB Step 1/31 : FROM docker01.cmdschool.org:5000/centos:centos7.3.1611 ---> c5d48e81b986 […] Successfully built dc0ee88069bf Successfully tagged apache-tomcat:8.5.58
如果镜像集群公用,还需要执行以下命令,
docker tag apache-tomcat:8.5.58 docker01.cmdschool.org:5000/apache-tomcat:8.5.58 docker push docker01.cmdschool.org:5000/apache-tomcat:8.5.58 docker image rm apache-tomcat:8.5.58
完成后,可使用如下命令查看镜像,
docker images
可见如下显示,
REPOSITORY TAG IMAGE ID CREATED SIZE docker01.cmdschool.org:5000/apache-tomcat 8.5.58 dc0ee88069bf 43 minutes ago 762MB [...]
2.2.4 测试软件运行
docker run -d --name tomcat -p 8080:8080 docker01.cmdschool.org:5000/apache-tomcat:8.5.58
以上运行容器环境后,我们使用以下命令登录容器虚拟机,
docker exec -it `docker container ls | grep 'tomcat' | cut -d" " -f1 ` /bin/bash
可使用如下命令查看软件倾听的端口,
netstat -antp
可见如下显示,
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 12/jsvc.exec
测试完成后可使用如下命令退出容器虚拟机,
exit
另外,你可以使用如下命令查询当前运行的container,
docker ps -a
可见如下显示,
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b68ed6e5f7e3 docker01.cmdschool.org:5000/apache-tomcat:8.5.58 "/bin/bash ./start.sh" About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp tomcat [...]
然后可以使用如下命令停止并删除,
docker container stop b68ed6e5f7e3 docker container rm b68ed6e5f7e3
另外,也可以使用浏览器测试,
没有评论