七、Docker入门系列--使用DockerFlie自定义Tomcat镜像

七、自定义镜像Tomcat9

一、Docker入门系列--Docker 简介
二、Docker入门系列--Docker安装
三、Docker入门系列--Docker常用命令
四、Docker入门系列--Docker镜像
五、Docker入门系列--Docker容器数据卷
六、Docker入门系列--DockerFlie解析
七、Docker入门系列--使用DockerFlie自定义Tomcat镜像
八、Docker入门系列--Docker常用安装
九、Docker入门系列--本地镜像发布到阿里云
十、Docker入门系列--Docker-Compose简介和安装
十一、Docker入门系列--Docker-Compose模板命令
十二、Docker入门系列--Docker-Compose常用命令
十三、Docker入门系列--Portainer可视化Docker
十四、Docker入门系列--Docker搭建部署SpringCloud微服务项目Demo


7.1 创建目录

mkdir /mydocker/tomcat9

在该目录下新建touch.txt文件

7.2 将jdk和tomcat安装的压缩包拷贝进上述目录

7.3 在tomcat9目录下新建Dockerfile文件

注意一下,Dockerfile文件里面涉及到jdk跟tomcat版本的地方一定要确定跟你放在tomcat9文件夹下的一致(别复制粘贴了就是build,到时候run运行不出来)

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

7.4 构建镜像:docker build -t mrlinxitomcat9 .

注意:这里为什么没有加 -f 和Dockerfile的路径?Dockerfile的标准文件名就是Dockerfile,当当前目录下用于构建镜像的Dockerfile的文件名是标准文件名时,可以省略-f+路径。这时Docker会直接读取当前目录下名为Dockerfile的文件进行镜像的构建。

7.5 创建容器并启动

docker run -d -p 8888:8080 --name myt9 -v /mydocker/tomcat9/test:/usr/local/apache-tomcat-9.0.55/webapps/test -v /mydocker/tomcat9/tomcat9logs/:/usr/local/apache-tomcat-9.0.55/logs --privileged=true mrlinxitomcat9

7.6 测试

记得防火墙开放对应的端口(直接关闭防火墙也可以,但是不推荐):

firewall-cmd --permanent --zone=public --add-port=8888/tcp

访问成功。

7.7 结合前述的容器卷将测试的web服务test发布

cd /mydocker/tomcat9/test
mkdir WEB-INF

在test目录下创建a.jsp文件,在WEB-INF下创建web.xml文件

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>

a.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
  </head>
  <body>
    -----------welcome------------
    <%="i am in docker tomcat self "%>
    <br>
    <br>
    <% System.out.println("=============docker tomcat self");%>
  </body>
</html>

宿主机创建的文件已经同步过去了

重启一下容器:docker restart myt9,访问我们刚才发布的test

7.8 总结

posted @ 2022-12-07 09:26  向宁的光  阅读(232)  评论(0编辑  收藏  举报