docker制作tomcat镜像方法及异常处理
作者:风逸柏
在Docker中创建一个Tomcat镜像是一个常见的需求,尤其是在开发、测试和部署Java Web应用程序时,这篇文章主要介绍了docker制作tomcat镜像方法及异常处理的相关资料,需要的朋友可以参考下
【说明】
制作tomcat镜像,需要在官网下载tomcat binary压缩包。
tomcat官网:https://tomcat.apache.org/download-90.cgi
【配置方法】
- 新建一个/opt/tomcat/目录,将下载tomcat与jdk安装包上传并解压缩:
 
# mkdir -p /opt/tomcat; cd /opt/tomcat #ls apache-tomcat-9.0.93.tar.gz jdk-8u144-linux-x64.tar.gz Kylin-Server-V10-SP3-2403-Release-Docker-init-20240426-X86_64.tar.xz # tar -zxvf apache-tomcat-9.0.93.tar.gz # tar -zxvf jdk-8u144-linux-x64.tar.gz
- 提供制作镜像的base镜像,此次使用Kylin-Server-V10-SP3-2403-Release-Docker-init-20240426-X86_64.tar.xz
 
# docker load -i Kylin-Server-V10-SP3-2403-Release-Docker-init-20240426-X86_64.tar.xz # docker images [root@localhost tomcat]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE cr.kylinos.cn/v10sp3-2403/kylin-server-v10-sp3-2403-general-alpha20-x86_64-init 202405 6bd24f9f88c3 3 months ago 246MB
- 在当前目录下创建一个Dockerfile文件
 
# vim Dockfile
FROM cr.kylinos.cn/v10sp3-2403/kylin-server-v10-sp3-2403-general-alpha20-x86_64-init:202405
MAINTAINER xiongle
LABEL description="This is tomcat9.0.93 image" \
      Tomcat.Version="9.0.93" \
      OS.Version="Kylin-Server-V10-SP3-2403" \
      JDK.Version="OpenJDK Runtime Environment (Alibaba Dragonwell 8.7.7) (build 1.8.0_292-b01)" \
      mail="zhongjianjian@ceair.com"
ADD jdk-8u144-linux-x64.tar.gz  /opt/
ADD apache-tomcat-9.0.93.tar.gz /opt/
ENV JAVA_HOME /opt/jdk1.8.0_144
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /opt/apache-tomcat-9.0.93
ENV CATALINA_BASE /opt/apache-tomcat-9.0.93
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
RUN chmod +x /opt/apache-tomcat-9.0.93/bin/catalina.sh
EXPOSE 8080
CMD /opt/apache-tomcat-9.0.93/bin/catalina.sh run
- 通过docker build构建镜像
 
# docker build -t tomcat:9.0.93 .
- 运行容器
 
# docker images
REPOSITORY                                                                        TAG                 IMAGE ID            CREATED             SIZE
tomcat                                                                            9.0.93              3468b888f5b1        2 hours ago         639MB
cr.kylinos.cn/v10sp3-2403/kylin-server-v10-sp3-2403-general-alpha20-x86_64-init   202405              6bd24f9f88c3        3 months ago        246MB
# docker run -d  --name test1  -p 8060:8080   tomcat:9.0.93
# docker logs test1
Using CATALINA_BASE:   /opt/apache-tomcat-9.0.93
Using CATALINA_HOME:   /opt/apache-tomcat-9.0.93
Using CATALINA_TMPDIR: /opt/apache-tomcat-9.0.93/temp
Using JRE_HOME:        /opt/jdk1.8.0_144
Using CLASSPATH:       /opt/apache-tomcat-9.0.93/bin/bootstrap.jar:/opt/apache-tomcat-9.0.93/bin/tomcat-juli.jar
Using CATALINA_OPTS:
02-Sep-2024 15:20:22.501 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/9.0.93
02-Sep-2024 15:20:22.503 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Aug 2 2024 21:24:59 UTC
02-Sep-2024 15:20:22.504 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.93.0
02-Sep-2024 15:20:22.504 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
02-Sep-2024 15:20:22.504 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            4.19.90-52.22.v2207.ky10.x86_64
# docker  ps  -a 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
40e062400da6        tomcat:9.0.93       "/bin/sh -c '/opt/ap…"   2 hours ago         Up 2 hours          0.0.0.0:8060->8080/tcp   test1
# curl  localhost:8060
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Apache Tomcat/9.0.93</title>
        <link href="favicon.ico" rel="external nofollow"  rel="icon" type="image/x-icon" />
        <link href="tomcat.css" rel="external nofollow"  rel="stylesheet" type="text/css" />
    </head>
    <body>
        <div id="wrapper">
            <div id="navigation" class="curved container">
                <span id="nav-home"><a href="https://tomcat.apache.org/" rel="external nofollow" >Home</a></span>
                <span id="nav-hosts"><a href="/docs/" rel="external nofollow" >Documentation</a></span>
                <span id="nav-config"><a href="/docs/config/" rel="external nofollow" >Configuration</a></span>
                <span id="nav-examples"><a href="/examples/" rel="external nofollow" >Examples</a></span>
                <span id="nav-wiki"><a href="https://cwiki.apache.org/confluence/display/TOMCAT/" rel="external nofollow" >Wiki</a></span>
                <span id="nav-lists"><a href="https://tomcat.apache.org/lists.html" rel="external nofollow" >Mailing Lists</a></span>
                <span id="nav-help"><a href="https://tomcat.apache.org/findhelp.html" rel="external nofollow" >Find Help</a></span>
                <br class="separator" />
            </div>
            <div id="asf-box">
                <h1>Apache Tomcat/9.0.93</h1>
            </div>
            <div id="upper" class="curved container">
                <div id="congrats" class="curved container">
                    <h2>If you're seeing this, you've successfully installed Tomcat. Congratulations!</h2>
                </div>
【异常处理】
问题1:/opt/apache-tomact-9.0.50/bin/catalina.sh: permission denied.
解决方案:程序没权限执行catalina.sh脚本。在Dockerfile中新增一行:RUN chmod +x /opt/apache-tomcat-9.0.93/bin/catalina.sh
问题2:Error: Could not find or load main class org.apache.catalina.startup.Bootstrap
解决方案:构建镜像用的tomcat.tar.gz是src源码包,需要使用binary包。
总结
到此这篇关于docker制作tomcat镜像方法及异常处理的文章就介绍到这了,更多相关docker制作tomcat镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
