背景
看到有同事尝试使用docker搭建tomcat服务,然后用nginx实现服务的负载均衡,但是遇到了挂载的问题,于是我在我自己的mac上尝试了一下。
实践过程
在本地新建tomcat的目录,下方挂载对应的数据文件和脚本文件。
其中,start.sh
脚本的内容如下:
docker run -d \
-v $PWD/myapp:/usr/local/tomcat/webapps/myapp \
-p 8080:8080 \
--name my-tomcat \
docker.io/tomcat
挂载的应用名称是myapp
下的内容,并指定端口8080,应用的名称。
进入myapp
目录并执行以下命令:
echo "hello world" >index.html
浏览器访问地址:myapp
则会展示我的文本内容:
但是tomcat官方提供了很多的app,为什么不能使用呢?我有一个大胆的想法,把官方的服务也部署上去。
docker ps
docker exec -it e78 bash
进入容器,开整
这样,我把tomcat的app都部署了,浏览器访问
出现了403的错误
解决方案
首先在conf/tomcat-users.xml文件里面,在**前面**添加如下代码:遇到了坑,一定要配置在<tomcat–users>标签里
<role rolename="manager-gui"/>
<user password="admin" roles="manager-gui" username="tomcat"/>
出现了vim命令找不到的错误
apt-get update apt-get install -y vim
重启容器,发现还是访问不了:访问的ip地受到了限制,我们打开**/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|\d+\.\d+\.\d+\.\d+" />
查看
重启完成,访问管理页面 用户名、密码为刚才配置的
参考文章
- tomcat管理页面403解决办法
- docker容器中如法找到vim