自定义tomcat镜像以及使用过程中的问题

自定义tomcat镜像以及使用过程中的问题

先在宿主机上创建目录 mkdir -p /lie/mydockerfile/tomcat9, 并创建一个txt文件, 和上传tomcat和jdk 的压缩包
随后编写一个 dockerfile文件

FROM         centos
MAINTAINER    lzy<lie384858216@126.com>
#把宿主机当前上下文的c.txt拷贝到容器/usr/local/路径下
COPY goodbye.txt /usr/local/cincontainer.txt
#把java与tomcat添加到容器中
ADD jdk-8u241-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.45.tar.gz /usr/local/
#安装vim编辑器
RUN yum -y install vim
#设置工作访问时候的WORKDIR路径,登录落脚点
ENV MYPATH /usr/local
WORKDIR $MYPATH
#配置java与tomcat环境变量 jdk1.8.0_241 apache-tomcat-9.0.45
ENV JAVA_HOME /usr/local/jdk1.8.0_241
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.45
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.45
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#容器运行时监听的端口
EXPOSE  8080
#启动时运行tomcat
# ENTRYPOINT ["/usr/local/apache-tomcat-9.0.45/bin/startup.sh" ]
# CMD ["/usr/local/apache-tomcat-9.0.45/bin/catalina.sh","run"]
CMD /usr/local/apache-tomcat-9.0.45/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.45/bin/logs/catalina.out

构建 镜像 docker build -t mytomcat9 .
注意事项: 如果要构建的文件是dockerfile , 就可以不需要 -f 直接docker build 就可以了 ,如果使用docker build -f 就要指定要构建的文件

创建容器的命令,tomcat默认项目根目录是ROOT, 而不像官方镜像里根目录是 webapps
docker run -d -p 9080:8080 --name myt13 -v /lie/mydockerfile/tomcat9/test:/usr/local/apache-tomcat-9.0.45/webapps/ROOT/test/ -v /lie/mydockerfile/tomcat9/tomcat9logs/:/usr/local/apache-tomcat-9.0.45/logs --privileged=true mytomcat9

此时去到宿主机下的/lie/mydockerfile/tomcat9/test 目录下新建文件和目录
mkdir WEB-INF
cd WEB-INF
WEB-INF 里要有一个 web.xml 文件, 文件内容如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
??xmlns="http://java.sun.com/xml/ns/javaee"
??xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
??id="WebApp_ID" version="2.5">
??
??<display-name>test</display-name>
</web-app>

回到test目录下, 新建一个 html 文件, 内容随便写
此时重启 容器 docker restart 容器ID

去到浏览器上, 输入 ip:9080/test/xxx.html 就可以看到html文件了,虽然是静态文件.此时我们修改html文件的内容, 浏览器上可以看到我们修改的内容.