记一次linux下使用docker部署tomcat项目遇到的404问题

由于实验室ip更换,所有项目需要重新部署

今天拿一个上古时代的项目,并附带了部署流程,挺人性化的

在这里插入图片描述
文档大概长这样
于是乎天真的我连接上服务器,拿到项目,打开readme.txt,噩梦正式开始。。。

步骤一:将KnowledgeGraph.tar.gz解压至合适的部署地方,解压后生成kgOld文件夹,进入kgOld目录。注意:如果查询本机ip地址提示command not found,可以运行“yum install net-tools wget -y”命令让系统识别ifconfig。
步骤二:运行firstStep.sh文件fir,运行完毕后,进入 “本机ip:7474”地址,如“192.168.129.55:7474”;进入neo4j,原始账号密码都为neo4j,修改密码为scuimage
步骤三:运行secondStep.sh文件,等待部署成功
步骤四:部署成功后,访问“本机ip:8080/KnowledgeGraph”,如“192.168.129.55:8080/KnowledgeGraph”即可。登陆页面管理员用户名和密码都是admin,
如果登陆时遇到提示框“未知错误”,代表数据库仍然在导入,耐心等一会再尝试登陆。

不得不说,师兄还挺厚道,这完全就是傻瓜式部署方案嘛,我闭着眼睛都能完成!

一通操作四步下来没有任何报错,我以为这波稳了,打开网页
404

???
不要紧,可以先看一下师兄的交互文档,是不是有什么细节被遗忘了?
根据文档描述,docker中建立了6个容器,并将这六个容器形成一个子网,可以使用容器名称来代替其ip

这好说,有可能就是因为ip变了,开发的和部署运维的不是同一个人导致项目崩溃了,于是跑去git把源代码拉下来,一看配置文件

发现第一个问题

twitterPortraitPath = D:/KGMultiMedia/
documentsFilePath = D:/KGMultiMedia/KGMultiMedia/documents/
dataType = kgdata
qaUrl = http://192.168.128.55:8086/index/?question=
absUrl = http://192.168.128.55:8086:8081/summary?param1=
extractUrl = http://192.168.128.55:8086:8081/entity?param1=
twitterUrl = http://192.168.128.55:8086:8083/summary?

#c3p0.jdbcUrl=jdbc:mysql://192.168.128.54:3306/kgdb?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
c3p0.jdbcUrl=jdbc:mysql://192.168.128.55:3306/kgdb?useUnicode=true&characterEncoding=UTF-8

果然,这里还是用的原来的ip
既然用了容器,把配置的ip改成容器名称就好啦

qaUrl = http://kgqa:8086/index/?question=
absUrl = http://kgabs:8081/summary?param1=
extractUrl = http://kgabs:8081/entity?param1=
twitterUrl = http://kgtwitter:8083/summary?

c3p0.jdbcUrl=jdbc:mysql://kgMysql:3306/kgdb?useUnicode=true&characterEncoding=UTF-8

这样总能跑了吧。。。

于是又按着交互文档步骤执行一遍。。。
依旧404

没有任何变化??

(此处省去一万遍重复交互文档步骤的操作)

还是不行,无奈,再打开源码检查。。。

惊奇的发现tomcat的webapp目录长这样:
在这里插入图片描述
他似乎少了什么??

没错

发现第二个问题

他没有web.xml文件!!!

可是如果真没有web.xml他们原来的项目是如何运行并不报错的呢?

于是我仔细翻阅发现.girignore文件配置如下

# setting files
.svn/
.settings/
.classpath
.project
target/
web.xml

web.xml的大名赫然躺在其中!!
git上传代码时把web.xml忽略了,得把它添加回来,并放行要访问的静态资源

这就好啦,总该能访问了把!

再次执行交互文档步骤的操作。。。

在这里插入描述

功夫不负有心人,登录界面终于出来了,大功告成!

了吧。。。


登录后发现,这tmd图片呢???

打开F12一看
在这里插入图片描述
还是404

既然拦截都取消了,为什么还会访问不到呢??

发现第三处问题

会不会是他访问的资源根本就不在项目中??

再次打开源码,检查细节,果然,还是配置文件

twitterPortraitPath = D:/KGMultiMedia/
documentsFilePath = D:/KGMultiMedia/KGMultiMedia/documents/
dataType = kgdata
qaUrl = http://kgqa:8086/index/?question=
absUrl = http://kgabs:8081/summary?param1=
extractUrl = http://kgabs:8081/entity?param1=
twitterUrl = http://kgtwitter:8083/summary?

刚才检查没注意,这配置路径居然是windows的。。。
这还能部署到linux上,也是醉了。。。
要在docker的tomcat上运行就应该配置映射到docker容器的tomcat路径下
赶紧修改

twitterPortraitPath = /usr/local/tomcat/webapps/KGMultiMedia/
documentsFilePath = /usr/local/tomcat/webapps/KGMultiMedia/documents/

这下总能行了吧??

依旧404

此时需要考虑到docker的配置问题,会不会创建tomcat容器的时候资源没有映射到指定位置?

发现第四个问题

打开secondStep.sh,发现以下语句

docker run -d -p 8080:8080 --name tomcat  --net kgnet --ip 192.193.0.7  --restart always -v ${cur_path}/webapps:/usr/local/tomcat/webapps -v ${cur_path}/KGMultiMedia/:/KGMultiMedia/  --privileged=true tomcat:9.0.30-jdk8-adoptopenjdk-hotspot

果然预设的路径跟我设置的不一样

应该把配置文件的路径与docker映射路径统一

docker run -d -p 8080:8080 --name tomcat  --net kgnet --ip 192.193.0.7  --restart always -v ${cur_path}/webapps:/usr/local/tomcat/webapps -v ${cur_path}/KGMultiMedia/:/usr/local/tomcat/webapps/KGMultiMedia/  --privileged=true tomcat:9.0.30-jdk8-adoptopenjdk-hotspot

这样就能访问了

这四个404虽然都是小问题,但确实耗费我了一整天的时间才找出来,以此为戒!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值