Docker学习(四)使用DockerFile安装Tomcat

Docker学习
placeholder image
admin 发布于:2019-03-24 21:06:40
阅读:loading

在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<88911006@qq.com>

#定义环境变量

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"]

安装文件参考

image.png

编译运行容器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目录下的参数文件。

运行效果

image.png

image.png

image.png

image.png

image.png

以上示例为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输出;

页面访问效果

image.png

日志输出

image.png

相关下载

链接:https://pan.baidu.com/s/1bWYvRxZwBsn79SKTqQ9vOA 

提取码:n7nh 


 点赞


 发表评论

当前回复:作者

 评论列表


留言区