在docker里运行一个tomcat很简单,只要使用run命令同时把端口做好映射,我们就能在宿主机访问到tomcat的默认ROOT页面了。那怎样才能把我们自己打包的项目放到tomcat容器里,让它可以访问呢。
我使用的方法是把项目的war包文件共享给容器。

一、准备项目部署包

我使用的是jpress这款博客系统的部署包,因为新版本的jpress不提供war包下载了,所以我下载源码编译后上传了一份,当然你可以用自己手里现有的war包。jpress war下载地址 (ps:我不知道为什么下载需要积分,不是我的本意,网站自己给加上的。。。)

二、挂载本地目录

  • 手动挂载
    先在Oracle VM VirtualBox里设置共享文件夹,这里先取消自动挂载
    在这里插入图片描述
    在docker命令行连接Linux虚拟机,切换到root权限,新建一个目录作为挂载点,挂载共享文件夹。这里将docker-share文件夹挂载到了/mnt/docker目录下。进入目录能看到我准备好的jpress.war文件
user@DESKTOP-61OC5NG MINGW64 /d/15-Docker Toolbox
$ docker-machine ssh default
( '>')
/) TC (\ Core is distributed with ABSOLUTELY NO WARRANTY.
(/-_--_-\) www.tinycorelinux.net

docker@default:~$ sudo -i
root@default:~#mkdir –p /mnt/docker
root@default:~# sudo mount-t docker-share /mnt/docker
root@default:/mnt/docker# ls
jpress.war

接下来可以退出虚拟机启动tomcat容器,此时添加参数,挂载共享文件夹,我把文件夹共享到了tomcat的webapps目录下,这样运行完tomcat项目就直接被部署了。

user@DESKTOP-61OC5NG MINGW64 /d/15-Docker Toolbox
$ docker run -d -p 8080:8080 -v /mnt/docker:/usr/local/tomcat/webapps tomcat
9f8a92147395b00c8adac78afbf4fd01bfe452d4718bcdcd1d993cd427ba1051

浏览器访问http://192.168.99.100:8080/jpress查看项目效果
在这里插入图片描述

  • 自动挂载

我们再修改一下设置,把共享文件夹改为自动挂载
在这里插入图片描述
重启VirtualBox,重启虚拟机
docker-machine restart default
输入docker-machine ssh default,进入虚拟机内部
使用mount命令查看挂载情况(这里删掉了其他信息),可以看到系统自动挂载了docker-share目录

docker@default:~$ mount
···
/c/Users on /c/Users type vboxsf (rw,nodev,relatime)
/docker-share on /docker-share type vboxsf (rw,nodev,relatime)
···

接下来可以直接使用命令启动容器,挂载目录

docker@default:~$ docker run -d -p 8080:8080 -v /docker-share:/usr/local/tomcat/webapps tomcat
4fc331cc9a65a3b16da543b5589f3c8b569bf92bfa78185b54cb9ea9f3692199

项目也是能成功被访问到的。

三、总结

整个流程下来发现就是做了这么一件事儿:先把共享文件夹挂载到docker运行的虚拟Linux环境,再在容器运行的时候通过命令把共享文件共享给运行起来的容器。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐