- 创建tomcat容器 -d指后台运行 --name : 起别名 -p 映射的端口
docker run tomcat --name mytomcat -p 8080:8080 -d
- 进入容器内部 容器内部有一些设置文件 只能通过这种方式进入
交互式的进入tomcat容器。“docker exec”命令表示在运行中的容器中开启一个新的进程。
docker exec -it mytomcat /bin/bash
查看到webapps路径为:/usr/local/tomcat/webapps。等下需要把war包拷贝到该路径下。然后tomcat会把war包自动解压
- 上传war包到容器 需要在开启一个终端 (比较方便)
docker中也可以使用cp命令完成和宿主机的文件拷贝。
docker cp /xxxx.war mytomcat:/usr/local/tomcat/webapps
- 重启容器 (正常应该重启,我没有重启直接就被tomcat加载了)
- docker restart mytomcat
重启容器,然后就可以发现上传的war包已经自动解压部署了。进入webapps目录即可查看。
- 访问应用
要注意访问的路径可能和自己本机测试跑的路径不同。如果你本身是一个多module项目,本地测试跑起来的url路径与目前单独war包部署跑起来的路径肯定是不同的。 如:正常在本地测试时 192.168.0.1:8080/直接就是根目录 而部署之后需要192.168.0.1:8080/项目名/才可以访问正常路径,一些静态文件也加载不上来 (巨坑啊)
解决办法:(正常不用docker部署 也需要这样配置)
还是进入容器内部 ls一下 发现有个 conf
LICENSE NOTICE RELEASE-NOTES RUNNING.txt bin conf include lib logs native-jni-lib temp webapps work
进入 conf 有个server.xml文件 我们需要在这里加一些参数 (重点是容器内部不支持 vi和vim这种命令只能查看)
水平有限 我把这个文件拷贝到主机 根目录
docker cp mytomcat:/usr/local/tomcat/conf/server.xml /
然后用window改的server.xml文件
在配置文件最后面加上<Context path="" docBase="/usr/local/tomcat/webapps/mw-project" debug="0" reloadable="true"></Context>
只需要把mw-project 改成你的项目名 (为什么不加后缀war,因为war解压好就是这个文件夹了,到webapps/下可以看到)
最后配置完成我们需要覆盖 容器内部的server.xml
docker cp /server.xml mytomcat:/usr/local/tomcat/conf/server.xml
这样就把配置文件修改好了 重新运行 docker restart mytomcat 完美!