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 //关闭防火墙

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐