• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Docker构建Maven+Tomcat基础镜像的实现

    前言

    在 Java 编程中,大多数应用都是是基于 Maven 构建的,而交付的结果大多是采用的 Tomcat 的 war 包形式,所以,构建一个基于 Maven 和 Tomcat 的基础镜像很有必要,不仅能帮助我们提升平时自主实验研究分析的效率,还可以在一定程度能减少运维减少编写 Dockerfile 的复杂度,提升整体项目交付效率。

    1.创建编译目录

    mkdir -p build_docker
    cd build_docker
    vim Dockerfile
    

    2.编写 Dockerfile

    首先,我们选择官方维护的 maven:3.3.3 镜像作为基础镜像,然后,在此基础上添加 Tomcat 支持。

    FROM maven:3.3.3 

    如果喜欢国内仓库的速度,也可以选择阿里的 maven:3-jdk-8。

    FROM registry.cn-hangzhou.aliyuncs.com/acs/maven:3-jdk-8

    其次,设置 Tomcat 相关的环境变量,并添加到系统 PATH 变量中,使 Tomcat 的启动脚本可以在 Shell 中直接访问。

    ENV CATALINA_HOME /usr/local/tomcat
    ENV PATH $CATALINA_HOME/bin:$PATH
    RUN mkdir -p "$CATALINA_HOME"
    WORKDIR $CATALINA_HOME
    

    第三,添加 Tomcat GPG-KEY,用于 Tomcat 下载完后校验文件是否正确,以下keyid数据来自官方 Tomcat-8。

    RUN gpg --keyserver pool.sks-keyservers.net --recv-keys \
    
    F22C4FED \
    
    86867BA6 \
    
    E86E29AC \
    
    307A10A5 \
    
    564C17A3 \
    
    0x7C037D42 \
    
    0BECE548 \
    
    5E763BEC \
    
    2F6059E7 \
    
    288584E7 \
    
    4B6FAEFB \
    
    286BACF1 \
    
    731FABEE \
    
    461B342D \
    
    0D498E23 \
    
    DC3D1B18 \
    
    D63011C7 \
    
    30480593

    第四,设置 Tomcat 版本变量,构建时可以传入相应参数来更改 Tomcat 版本。因为 maven:3.3.3 镜像依赖的 Java 版本是 1.8,,所以我们的 Tomcat 版本也选择 8.X 版本,保持编译一致性可以最大化 Tomcat 的性能。

    这里我们选用最新版:8.5.45

    随后使用 curl 执行下载,并验证后解压,同时删除多余的 bat 脚本。(该脚本仅用于 Windows 环境,在Linux/Mac镜像中无用)

    ENV TOMCAT_VERSION 8.5.45
    ENV TOMCAT_TGZ_URL https://www.apache.org/dist/tomcat/tomcat-8/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz
    
    RUN set -x \
    
      && curl -fSL "$TOMCAT_TGZ_URL" -o tomcat.tar.gz \
    
      && curl -fSL "$TOMCAT_TGZ_URL.asc" -o tomcat.tar.gz.asc \
    
      && gpg --verify tomcat.tar.gz.asc \
    
      && tar -xvf tomcat.tar.gz --strip-components=1 \
    
      && rm bin/*.bat \
    
      && rm tomcat.tar.gz*

    第五,暴露 Tomcat 默认的 8080 端口,并指定基于该镜像的容器启动时执行的脚本,该脚本为 Tomcat 启动脚本。

    EXPOSE 8080
    CMD ["catalina.sh", "run"]
    

    3.构建镜像

    docker build -t base-maven-tomcat . 

    到此,完成。

    附:完整 Dockerfile 文件

    FROM maven:3.3.3
    
    ENV CATALINA_HOME /usr/local/tomcat
    ENV PATH $CATALINA_HOME/bin:$PATH
    RUN mkdir -p "$CATALINA_HOME"
    WORKDIR $CATALINA_HOME
    
    RUN gpg --keyserver pool.sks-keyservers.net --recv-keys \
    
    F22C4FED \
    
    86867BA6 \
    
    E86E29AC \
    
    307A10A5 \
    
    564C17A3 \
    
    0x7C037D42 \
    
    0BECE548 \
    
    5E763BEC \
    
    2F6059E7 \
    
    288584E7 \
    
    4B6FAEFB \
    
    286BACF1 \
    
    731FABEE \
    
    461B342D \
    
    0D498E23 \
    
    DC3D1B18 \
    
    D63011C7 \
    
    30480593
    
    ENV TOMCAT_VERSION 8.5.45
    ENV TOMCAT_TGZ_URL https://www.apache.org/dist/tomcat/tomcat-8/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz
    
    RUN set -x \
    
      && curl -fSL "$TOMCAT_TGZ_URL" -o tomcat.tar.gz \
    
      && curl -fSL "$TOMCAT_TGZ_URL.asc" -o tomcat.tar.gz.asc \
    
      && gpg --verify tomcat.tar.gz.asc \
    
      && tar -xvf tomcat.tar.gz --strip-components=1 \
    
      && rm bin/*.bat \
    
      && rm tomcat.tar.gz*
    
    EXPOSE 8080
    CMD ["catalina.sh", "run"]
    
    

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    上一篇:Linux中Homebrew的正确使用方法
    下一篇:Linux nohup实现后台运行程序及查看(nohup与&)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Docker构建Maven+Tomcat基础镜像的实现 Docker,构建,Maven+Tomcat,基础,