以给Tomcat9添加账号为例子演示

背景

在使用tomcat时,往往我们需要打开管理页面,部署我们的应用或者重启我们的服务,但是如果你是Docker版本的tomcat,又是默认从docker store 中下载到的官方版,那么默认配置是没有添加账号的,这时我们可能需要居于现有的docker版本的tomcat去新建个新的docker tomcat。


下载

我们是针对现有的docker 版本的tomcat上做修改,所以我们先从docker store(https://store.docker.com/images/tomcat) 下载tomcat,以下我都以CentOS和tomcat 9为例:

下载:

  1. $ docker pull tomcat:9.0.2-jre8

添加账号

想要添加登录账号,我们有两种方式:

方法一

方法1的简单思路就是进入到tomcat容器,然后找到需要修改的文件,修改成你期望的配置。

  1. 运行容器:
$ sudo docker run -d -p 8080:8080 --name tomcat9  tomcat:9.0.2-jre8

2)进入容器:

$ sudo docker exec -it tomcat9 /bin/bash

这时我们就进入到容器中的tomcat,下一步就是找到对应的配置文件进行修改,但是容器内的系统本身没有vim等编辑器,所以我们还需要安装个编辑器vim。

  1. 安装vim:
$ sudo apt-get update
$ sudo apt-get install vim
  1. 修改tomcat对应文件:
    修改tomcat安装路径下:\conf\tomcat-users.xml,我们可以在tomcat-users 标签中添加如下账号密码:
</tomcat-users>

<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="admin" password="admin" roles="manager-gui"/>
<user username="admin123" password="admin123" roles="admin-gui"/>

</tomcat-users>

理论上添加完这个后便可,但是如果你不是在当前机器打开tomcat管理页面,那么我们还需要修改另一个配置,让其在其他机器也能打开tomcat管理页面:\webapps\manager\META-INF\context.xml 。
我们注释掉中间这个配置,这样就允许非本机登录tomcat管理页面。

<Context antiResourceLocking="false" privileged="true" >
 <!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
</Context>

方法二

方法二其实跟方法一最终目的是一样的都是要去修改tomcat对应配置,只是如果我们不想再安装vim或者我们本地已经有配置好的tomcat配置文件,那么我们就通过运行容器时,往容器里面拷贝一些文件,同样这个方法也可以用于发布应用。
1)本机编辑好对应的tomcat-users.xml和context.xml 文件
2)启动tomcat容器,并把本机tomcat9file文件夹下的所有文件拷贝到tomcat9容器的user/Downloads 中:

$ sudo docker run -d -p 8080:8080 --name tomcat9 -v /home/XXX/tomcat9file:/usr/Downloads tomcat:9.0.2-jre8

/home/XXX/tomcat9file为本机的路径,把要覆盖的文件放到该文件夹下
/usr/Downloads 为上面文件要放到容器里面的该路径下

3)进入容器:

$ sudo docker exec -it tomcat9 /bin/bash

4)拷贝文件覆盖原文件:

$ sudo cp /usr/Downloads/context.xml /usr/local/tomcat/webapps/manager/META-INF/

$ sudo cp /usr/Downloads/tomcat-users.xml /usr/local/tomcat/conf/

重启容器,如果修改生效。 那么可以把该容器重新生成新的镜像,并提交到私人仓库。