docker部署简单web项目(JSP+Servlet+Mysql8)

docker中部署一个简单的web项目,简单记录一下

系统:centos8
架构:jsp+servlet+mysql8

首先运行tomcat的容器
运行tomcat容器
使用虚拟机IP+端口访问tomcat,可能会出现下面的问题:
404

进入容器查看webapps目录,发现是空的,真正的文件全在webapps.dist中,需要将webapps.dist重命名为webapps
重命名
可以看到,再次访问成功
访问成功

接着运行mysql容器

docker run --name mysql1 -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=123456 mysql

使用docker inspect mysql1查看容器的IP,并将web项目中连接数据库的url修改成该IP(Gateway为docker内网IP,IPAddress为mysql容器IP)
IP
URL
使用navicat远程连接数据库,若连接失败可以更改加密方式(注:docker内只能通过内网IP访问数据库,因为虚拟机的端口在更外的一个层级,docker内的容器访问不到)
navicat

使用docker cp /test.war tomcat1:/usr/local/tomcat/webapps将打包好的项目war包移动到容器webapps目录下,自动完成部署,使用 虚拟机IP:端口号/项目名 来进行访问
部署
至此完成项目在docker中的部署
success

可能会出现连接不了数据库的问题,这是由于防火墙导致的
这里有两种解决方法
1.(推荐)
firewall-cmd --permanent --zone=trusted --change-interface=docker0 //docker设置为trusted域
firewall-cmd --zone=public --add-port=3306/tcp --permanent //开放3306端口
firewall-cmd --reload //重新加载
2.(不推荐)
systemctl stop firewalld.service //关闭防火墙

猜你喜欢

转载自blog.csdn.net/qq_40622253/article/details/108071857