zoukankan      html  css  js  c++  java
  • centos7一步一步搭建docker tomcat 及重点讲解

      系统环境:centos7.7 (VMware中)

      image版本:tomcat:8-jdk8-openjdk (截止2020.01.10该系列版本)

      安装步骤参考文章:https://www.jianshu.com/p/d053573ffab1

      1、docker search tomcat 查看版本总感觉不太直观,可以去官网查找想要的版本 https://hub.docker.com/_/tomcat?tab=tags&page=1 ,然后使用docker pull tomcat:对应版本号 安装,安装最新可以直接使用 docker pull tomcat。 

      

      2、docker images 查看已经安装的镜像。

      

      3、启动一个tomcat容器,并命名为 test_tomcat 。

      

      4、查看启动的docker tomcat 容器。在(2020.1.5号以前)浏览器中输入ip:端口号应该是可以访问到tomcat管理页面的,但是最新版本的docker tomcat镜像运行后的容器竟然都不可以,即使最新版本的tomcat:latest也不行,下面我将为大家介绍处理方式。

      

      (2020.01.05以前)的镜像运行tomcat容器后访问应该是下面的页面 

      

      但(2020.01.05)后的所有版本tomcat镜像启动容器后访问是下面这样的。

      

      这是为什么呢?下面介绍为什么。

      5、创建linux宿主机文件夹用于存储tomcat容器中复制出来的配置文件。

      

      6、进入docker tomcat查看目录。命令 docker exec -it 容器名字(或容器container id) bash。此处推荐用容器名字(如上面命名的容器名字test_tomcat)方便书写。默认进入容器的 /usr/local/tomcat 文件夹,这里注意几个文件夹后面会用到,一个是conf,一个是webapps。我们进入conf,然后查看里面有哪些文件,注意tomcat-users.xml是我们要复制的。  

        然后我们切换进webapps文件夹,查看里面的文件,竟然是空的!!!里面不应该有manager等文件夹吗??等等,我们看上图,webapps后面怎么多了一个webapps.dist文件夹???以前的版本是没有的!让我们切换进webapps.dist文件夹,查看里面的文件,哇!!!这不是应该在webaspps中的文件吗???(个人猜测:因为docker推荐将webapps下的文件挂载在宿主机下,否则删除tomcat容器的时候服务文件会全部丢失,为了让大家主动将webapps挂载出来,可能维护者将以后的tomcat镜像全部改成webapps为空,需要使用者手动将webapps.dist复制出来并挂载使用)我可能是第一个发现这个版本配置的文章???

      

    原文地址:https://www.cnblogs.com/jying/p/12176107.html
    作者:一定会去旅行
    欢迎任何形式的转载,但请务必注明出处。
    限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

     7、exit退出容器,并复制tomcat容器配置文件(tomcat-users.xml)和整个webapps.dist文件夹到linux 宿主机。用语句 docker cp 容器配置文件路径 linux宿主机存储路径。

      

      8、停止正在运行的tomcat容器,并删除该容器test_tomcat。

      

      9、修改复制出来的文件。tomcat-users.xml配置权限,/webapps/manager/META-INF/context.xml 配置访问地址和端口等。

        编辑tomcat-usrs.xml,底部</tomcat-users>以内添加如下内容,其中授权访问账号为:tomcat,密码为:tomcat.2019

      <role rolename="manager-gui" />
      <role rolename="manager-script" />
      <role rolename="manager-status" />
      <role rolename="manager-jmx" />
      <user username="tomcat" password="tomcat.2019" roles="manager-gui,manager-script,manager-status,manager-jmx" />

       

        切进/webapps/manager/META-INF文件夹,编辑里面的context.xml文件,将以下内容注释掉。  

      

    <!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.d+.d+.d+|::1|0:0:0:0:0:0:0:1" /> -->

       10、重新运行一个tomcat容器,并挂载本地的配置文件到容器对应文件。  

    docker run -dit --name my_tomcat_2020 -p 8081:8080 --restart=always -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro -v /www/tomcat/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml -v /www/tomcat/webapps:/usr/local/tomcat/webapps tomcat:8-jdk8-openjdk

    参数解析:
    -d 后台运行容器,并返回容器ID;
    --name 为容器起一个容易区分且容易书写的名字
    -p 映射宿主机端口到容器端口,宿主机端口:容器端口
    --restart=always 机器重启时自动启动容器
    -e       设定一些必须的环境变量。本例子中 -e TZ="Asia/Shanghai" 设定时区为上海,强烈建议国内设定,否则容器内打印的所有日志时间都会差8小时。
    -v       挂载宿主机文件到容器。本例三个分别为:
              -v /etc/localtime:/etc/localtime:ro 挂载宿主机时间,保持容器时间正确。
              -v /www/tomcat/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml 挂载宿主机配置文件到容器。
              -v /www/tomcat/webapps:/usr/local/tomcat/webapps 挂载宿主机/webapps到容器。

    更多配置参数含义请参考:https://blog.csdn.net/qq_19381989/article/details/102781663

      

      11、重新访问ip:8081,便可以访问页面啦,manager也可以进去~~

        

      12、配置完成~~

      

      

  • 相关阅读:
    C#遍历DataSet中数据的几种方法总结
    ajax跨域访问控制
    几种数据库的大数据批量插入(SqlServer、Oracle、SQLite和MySql)
    转:InnoDB多版本(MVCC)实现简要分析
    转:InnoDB Page Structure(InnoDB页面结构详解)
    PostgreSQL 数据库角色
    PostgreSQL 9.5 客户端认证
    PostgreSQL服务器参数配置
    转:InnoDB Log Block Structure(InnoDB日志Block结构详解)
    转:InnoDB Crash Recovery 流程源码实现分析
  • 原文地址:https://www.cnblogs.com/jying/p/12176107.html
Copyright © 2011-2022 走看看