在很多情况下,我们会不满足于官方提供的Tomcat镜像。比如官方镜像的时区为UTC时间,并不是北京时间;再比如在特定硬件环境下,jdk的随机数生成器初始化过慢问题。此时,我们就会考虑构建自己的Tomcat镜像,满足我们实际应用的需要。
构建自己的Tomcat镜像有多种方式,常用的有两种
在官方提供的Tomcat镜像的基础上进行构建(以官方Tomcat镜像为父镜像)。官方的Tomcat镜像已经为我们做了很多工作,我们只需要修改部分内容即可。
根据openjdk镜像,参考官方Tomcat镜像的Dockerfile文件进行构建。我们可以完全按照自己的需求安装和配置Tomcat。当然,通过第一种方式也能达到这个目的,这不是本文的重点。
为了更好地演示Tocmat镜像的构建步骤,本文将按照第二种方式构建我们自己的Tomcat。我们构建的依据当然是官方Tomcat镜像的Dockerfile文件,有想了解该文件的内容朋友,可以移步至我的另一篇博客:官方Tomcat镜像Dockerfile分析及镜像使用。
我们会对官方的Dockerfile进行一定的精简,去掉可有可无的指令,并添加我们自定义的指令。当然这个可有可无只是我个人认为,仅供参考。
改造后的Dockerfile文件
FROM openjdk:8-jre MAINTAINER dfengwei@163.com ENV JAVA_HOME /docker-java-home ENV CATALINA_HOME /usr/local/tomcat ENV PATH $CATALINA_HOME/bin:$PATH ENV TIME_ZONE Asia/Shanghai RUN mkdir -p "$CATALINA_HOME"WORKDIR $CATALINA_HOME RUN set -x \ \ # 下载Tomcat压缩文件 && wget -O tomcat.tar.gz 'https://www.apache.org/dyn/closer.cgi?action=download&filename=tomcat/tomcat-8/v8.5.16/bin/apache-tomcat-8.5.16.tar.gz' \ # 解压 && tar -xvf tomcat.tar.gz --strip-components=1 \ # 删除供Windows系统使用的.bat文件 && rm bin/*.bat \ # 删除Tomcat压缩文件 && rm tomcat.tar.gz* \ \ # 更改时区 && echo "${TIME_ZONE}" > /etc/timezone \ && ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime \ \ # 处理Tomcat启动慢问题(随机数产生器初始化过慢) && sed -i "s#securerandom.source=file:/dev/random#securerand