背景
在使用tomcat时,往往我们需要打开管理页面,部署我们的应用或者重启我们的服务,但是如果你是Docker版本的tomcat,又是默认从docker store 中下载到的官方版,那么默认配置是没有添加账号的,这时我们可能需要居于现有的docker版本的tomcat去新建个新的docker tomcat。
下载
我们是针对现有的docker 版本的tomcat上做修改,所以我们先从docker store(https://store.docker.com/images/tomcat) 下载tomcat,以下我都以CentOS和tomcat 9为例:
下载:
$ docker pull tomcat:9.0.2-jre8
添加账号
想要添加登录账号,我们有两种方式:
方法一
方法1的简单思路就是进入到tomcat容器,然后找到需要修改的文件,修改成你期望的配置。
- 运行容器:
$ 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。
- 安装vim:
$ sudo apt-get update
$ sudo apt-get install vim
- 修改tomcat对应文件:
修改tomcat安装路径下:<tomcathome>\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管理页面:<tomcathome>\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/
重启容器,如果修改生效。 那么可以把该容器重新生成新的镜像,并提交到私人仓库。
欢迎关注个人公众号:
个人公众号
网友评论