在很多情況下,我們會不滿足于官方提供的Tomcat鏡像。比如官方鏡像的時區(qū)為UTC時間,并不是北京時間;再比如在特定硬件環(huán)境下,jdk的隨機數(shù)生成器初始化過慢問題。此時,我們就會考慮構(gòu)建自己的Tomcat鏡像,滿足我們實際應(yīng)用的需要。

構(gòu)建自己的Tomcat鏡像有多種方式,常用的有兩種

  1. 在官方提供的Tomcat鏡像的基礎(chǔ)上進行構(gòu)建(以官方Tomcat鏡像為父鏡像)。官方的Tomcat鏡像已經(jīng)為我們做了很多工作,我們只需要修改部分內(nèi)容即可。

  2. 根據(jù)openjdk鏡像,參考官方Tomcat鏡像的Dockerfile文件進行構(gòu)建。我們可以完全按照自己的需求安裝和配置Tomcat。當(dāng)然,通過第一種方式也能達到這個目的,這不是本文的重點。

為了更好地演示Tocmat鏡像的構(gòu)建步驟,本文將按照第二種方式構(gòu)建我們自己的Tomcat。我們構(gòu)建的依據(jù)當(dāng)然是官方Tomcat鏡像的Dockerfile文件,有想了解該文件的內(nèi)容朋友,可以移步至我的另一篇博客:官方Tomcat鏡像Dockerfile分析及鏡像使用

我們會對官方的Dockerfile進行一定的精簡,去掉可有可無的指令,并添加我們自定義的指令。當(dāng)然這個可有可無只是我個人認(rèn)為,僅供參考。

改造后的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系統(tǒng)使用的.bat文件
    && rm bin/*.bat \    # 刪除Tomcat壓縮文件
    && rm tomcat.tar.gz* \
    \    # 更改時區(qū)
    && echo "${TIME_ZONE}" > /etc/timezone \
    && ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime \
    \    # 處理Tomcat啟動慢問題(隨機數(shù)產(chǎn)生器初始化過慢)
    && sed -i "s#securerandom.source=file:/dev/random#securerand