天天看点

docker(12):alpinelinux安装tomcat1,tomcat2,整理下tomcat3,打包tomcat4,测试启动4,总结

使用alpine环境自己打包安装一个tomcat环境。

使用的是openjdk的jre,目标就是系统尽量的小。

依赖的东西尽量的少。构建tomcat最少需要一个jre。

使用的openjdk8的jre,才106mb。已经非常的小了。

<a href="http://blog.csdn.net/freewebsys/article/details/53744348">http://blog.csdn.net/freewebsys/article/details/53744348</a>

下载tomcat:

<a href="http://tomcat.apache.org/download-80.cgi">http://tomcat.apache.org/download-80.cgi</a>

tomcat最新的版本是8.5.9 ,tomcat9 还在测试中,生产环境使用tomcat8就行了,性能足够了。

首先解压缩,然后把tomcat里面的乱七八糟的东西删除下。

什么root,manager,user啥的,防止别人获得管理权限。

然后修改下service.xml,设置root是 / 访问。

其中删除了jrememoryleakpreventionlistener,关闭了tomcat的一个小时一次的full gc操作。

正常系统上线,内存一般都设置的很大不用担心这个。

<a href="http://gao-xianglong.iteye.com/blog/2171441">http://gao-xianglong.iteye.com/blog/2171441</a>

vi dockerfile

注意这里依赖openjre8 的镜像,要提前打好。

构建:

这样打包的tomcat 只有 114.8 mb 。非常的小呢。

创建文件夹:

写一个web.xml 配置

创建临时文件夹,log文件夹,temp文件夹,并设置权限。

在做tomcat基础包的时候,把root文件夹空出来,以后的应用要使用的时候再加上。

启动tomcat:

启动tomcat并绑定端口8080,映射目录/data/tomcat/root 作为主目录,同时映射logs和temp文件夹。

这样直接可以看tomcat的日志了。

测试下能访问成功。

进入docker容器查看:

docker exec -it tomcat-test bash

bash-4.3# df

docker(12):alpinelinux安装tomcat1,tomcat2,整理下tomcat3,打包tomcat4,测试启动4,总结

特别注意一点。有的是docker启动的时候并没有带动tomcat启动,而是直接退出了。

这个并不是docker的问题。是因为使用的命令不对。要使用 catalina.sh run 这个参数,这个命令一直执行。

如果使用startup.sh的时候就上后台了。docker以为有问题了。shell执行完了,就直接退出了。然后就不能-d执行了。

也就是说,使用entrypoint 和cmd 命令必须是一个死循环一直执行的命令。

entrypoin和cmd的区别就是cmd可以被替换。

要是使用 docker run -it demo/tomcat-base bash这个命令执行两个不同包。

entrypoint的包tomcat会启动,而cmd打的包,tomcat被shell替换了。不启动。