Docker学习(四)使用DockerFile的方式安装Tomcat9
http://www.chendd.cn/information/viewInformation/experienceShare/293.a
在docker中有一种镜像叫自定义,它允许我们通过自己需要的方式去构建镜像,称为DockerFile的方式,我个人也是比较喜欢这种方式,因为使用它我们可以自己去控制相关的安装包文件、配置参数、系统参数等等。
本篇文章的特点有以下几个方面:
①使用DockerFile构建,基于centos基础;
②解压安装本地apache-tomcat-9.0.16.tar.gz、jdk-8u191-linux-x64.tar.gz;
③修改tomcat的默认配置文件,支持访问文件夹时列出目录属性(验证属性更改);
④修改tomcat的默认项目文件,支持tomcat的控制台账号登录;
本篇文章涉及到的DockerFile知识点:
①涉及较多常用命令语句,有:FROM、MAINTAINER、ENV、WORKDIR、COPY、ADD、RUN、EXPOSE、CMD;
②基于本地软件构建的镜像;
③支持数据卷的文件同步;
④启动tomcat后可登录ROOT项目的控制台(tomcat/admintomcat);
本次将对本地tomcat9.0.16原版进行自定义安装,安装完成后将替换本地的conf目录下的配置文件,已将web.xml中的117行修改为true(支持访问文件夹路径);同时也修改了tomcat-users.xml文件,增加了一堆角色和用户,支持控制台项目的页面管理等;修改webapps目录下的manager、host-manager的context.xml支持远程登录控制台;设置conf、webapps、logs目录的数据卷挂载,持久化数据,详细参考如下:
DockerFile文件内容如下:
#自定义Docker-Tomcat镜像
#基础镜像
FROM centos:latest
#签名
MAINTAINER chendd<[email protected]>
#定义环境变量
ENV WORK_HOME /usr/local
#设置进入容器后的主目录
WORKDIR $WORK_HOME
#拷贝说明文件
COPY readme.txt $WORK_HOME/readme.txt
#拷贝并解压tomcat、jdk
ADD apache-tomcat-9.0.16.tar.gz $WORK_HOME
ADD jdk-8u191-linux-x64.tar.gz $WORK_HOME
#设置java环境变量
ENV JAVA_HOME $WORK_HOME/jdk1.8.0_191
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV TOMCAT_HOME $WORK_HOME/apache-tomcat-9.0.16
ENV PATH $PATH:$JAVA_HOME/bin:$TOMCAT_HOME/bin:$TOMCAT_HOME/lib
#覆盖tomcat的几个配置文件,增加tomcat的控制台管理界面等(演示用)
COPY tomcat-files/conf/web.xml $TOMCAT_HOME/conf/web.xml
COPY tomcat-files/conf/tomcat-users.xml $TOMCAT_HOME/conf/tomcat-users.xml
COPY tomcat-files/webapps/manager/META-INF/context.xml $TOMCAT_HOME/webapps/manager/META-INF/context.xml
COPY tomcat-files/webapps/host-manager/META-INF/context.xml $TOMCAT_HOME/webapps/host-manager/META-INF/context.xml
#安装vim命令
RUN yum -y install vim
#拷贝vim配置文件,支持该软件的自定义参数设置,如行号,行下划线等
COPY vimrc /etc/vimrc
#默认端口开放
EXPOSE 8080
#运行命令
CMD ["catalina.sh", "run"]
安装文件参考为:
编译运行容器tomcat9016,验证conf配置文件、webapps目录的更改是否生效
编译DockerFile文件命令:docker build -f /usr/local/temp/DockerFile -t chendd-tomcat:tomcat9.0.16 . 该步骤会生成chendd-tomcat:9.0.16的镜像
运行chendd-tomcat:9.0.16镜像生成容器并挂载conf、logs、webapps目录的数据卷:
docker run -it --name tomcat9016 -p 8002:8080 chendd-tomcat:tomcat9.0.16 该命令将会生成tomcat9016的容器并启动tomcat容器,同时会覆盖tomcat-files目录下的参数文件。
运行访问地址效果参考为:
以上示例为tomcat9016容器的运行结果,已经达到按预期的参数生效和项目属性文件更改等。
编译运行容器chendd-demo-tomcat运行Hello.war项目,并且挂载webapps、logs、conf目录
编译命令参考为:docker run -it --name chendd-demo-tomcat -p 8001:8080 -v /usr/local/temp/tomcat9.0.16/deployed-tomcat9/conf:/usr/local/apache-tomcat-9.0.16/conf -v /usr/local/temp/tomcat9.0.16/deployed-tomcat9/webapps:/usr/local/apache-tomcat-9.0.16/webapps -v /usr/local/temp/tomcat9.0.16/deployed-tomcat9/logs:/usr/local/apache-tomcat-9.0.16/logs chendd-tomcat:tomcat9.0.16
Hello.war代码为:一个JSP页面提交至servlet页面,并且使用JDK自带log类输出一行日志和System.out.println输出;
页面访问地址效果参考为:
日志目录输出参考为:
相关资源完整下载:
链接:https://pan.baidu.com/s/1bWYvRxZwBsn79SKTqQ9vOA
提取码:n7nh