dockerfile案例四:自定义镜像tomcat+发布web项目

   日期:2024-12-26    作者:yimingjing1986 移动:http://oml01z.riyuangf.com/mobile/quote/48336.html

安装tomcat需要jdk,所以需要准备两个安装包:jdk和tomcat

关于jdk和tomcat的版本兼容问题,需要参考https://hub.docker.com/_/tomcat 中的Supported tags,这里使用jdk8和tomcat8.5.63

1.下载这两个安装包

  • apache-tomcat-8.5.63.tar.gz,下载地址:https://tomcat.apache.org/download-80.cgi
  • jdk-8u281-linux-x64.tar.gz,下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

2. 创建宿主机上下文的目录,此目录将会是存放Dockerfile的目录,同时将docker build过程中需要拷贝到镜像的文件也放到此目录:

mkdir -p /nick/mydockerfile/tomcat8

Dockerfile如下:

构建镜像nicktomcat8:docker build -t nicktomcat8 . (不加 -f 参数指定dockerfile的文件名时,将默认寻找当前路径下的Dockerfile文件)

docker run -it -p 8888:8080 nicktomcat8

浏览器测试,访问 xxx.xxx.xxx.xxx:8888

tomcat版本正确,测试成功。

再查看容器内文件:

登录后的工作目录为/usr/local,宿主机上下文中的nick.txt已拷贝至容器并重命名,两个安装包已拷贝至容器并解压。

说明:

第一个容器卷是对应tomcat容器中的web项目文件夹,方便发布。

第二个容器卷是对应tomcat容器中的日志文件夹,方便跟踪日志。

--privileged=true,使用该参数,container内的root拥有真正的root权限,为了避免在容器内操作时遇到各种permission denied。

启动后宿主机的上下文目录下就多了test和tomcat8logs两个文件夹:

如上启动容器的时候添加了两个容器卷,其中第一个容器卷对应关联的是tomcat容器webapps下的test工程。

所以只需把代码文件直接放在宿主机的test文件夹中,自动同步至容器内,然后重启容器即可完成发布(这里tomcat可以不重启)。

编写一个abc.jsp和WEB-INF/web.xml放入宿主机的test路径下:

abc.jsp

WEB-INF/web.xml

查看容器,验证jsp和xml页面是否已同步

在浏览器验证:

 

修改宿主机下的abc.jsp,将welcome改为hello,刷新浏览器页面:

同样,第二个容器卷对应关联的是tomcat容器logs下的日志文件,需要查看日志的话,可以直接在宿主机中查询:

访问了两次abc.jsp,所以日志中打印了两次=============docker tomcat self。


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号