docker 部署多个tomcat容器无法访问默认页面

近期学习docker时 , 部署多台tomcat容器 , 发现无法正常访问tomcat的欢迎页
当然发现应用访问不到 , 首要是按顺序检查

   netstat -anp | more   # 查看端口监听是否开启

//再去手动开一下访问的端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

不过我的问题是使用简单命令启动tomcat容器是可以正常访问的
配置数据卷时就不能访问页面

docker run -d -p 8080:8080 --name  tomcat8080  镜像id

 docker run -d -p 8080:8080 --name my_tomcat -v    \
 /opt/vol_tomcat/webapps:/usr/local/tomcat/webapps  镜像id

问题根源: 就是tomcat欢迎页本身就是一个应用, 是默认安装的tomcat的webapps目录下的多个文件来实现的.

但在宿主机目录下/op/vol_tomcat/webapps 是个空目录, 这导致以此数据卷启动的多个容器tomcat

/usr/local/tomcat/webapps 目录也是空的, 所以都显示不出页面.

在这里插入图片描述
解决
就是要拿到一套这些tomcat默认的文件 , 可以用非数据卷方式起一个tomcat容器然后cp一份到宿主机
再用这个数据卷起n个tomcat容器 , 还保证这些容器内容都是一模一样的

# 非数据卷方式起一个tomcat容器
docker run -d -p 8080:8080 --name  tomcat8080  镜像id
# docker cp 将容器内的webapps 目录拷出到宿主机目录
docker cp tomcat8080:/usr/local/tomcat/webapps /opt/vol_tomcat
# 然后可以用这个数据卷去起很多的tomcat都是可以看到主页的

 docker run -d -p 8081:8080 --name tomcat8081 -v /opt/vol_tomcat/webapps:/usr/local/tomcat/webapps  镜像id
 docker run -d -p 8082:8080 --name tomcat8082 -v /opt/vol_tomcat/webapps:/usr/local/tomcat/webapps  镜像id
 docker run -d -p 8083:8080 --name tomcat8083 -v /opt/vol_tomcat/webapps:/usr/local/tomcat/webapps  镜像id

但是莫名感觉 这个和java -jar 启动指定端口没什么区别…

猜你喜欢

转载自blog.csdn.net/weixin_48011779/article/details/125512277
今日推荐