• 【问题总结】 记 一次dockerFile构建报错


    写在前面, 其实是一个比较摸不着脑袋的bug,记录一下解决的过程,作为备忘录

    问题留档

    1、场景描述

    在尝试使用dockefile构建一个tomcat镜像,内容如下,构建正常通过,但是容器启动失败

    FROM centos:7
    MAINTAINER zhuhuacong
    
    # 添加必备的文件 会自动解压
    ADD apache-tomcat-9.0.80.tar.gz /usr/local/
    ADD jdk-8u202-linux-i586.tar.gz /usr/local/
    
    
    # 切换到工作路径
    ENV MYPATH /usr/local
    WORKDIR $MYPATH
    # 添加环境变量配置
    ENV JAVA_HOME /usr/local/jdk1.8.0_202
    ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.80
    ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.80
    ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
    
    
    # 端口放开
    EXPOSE 8080
    
    # 启动tomcat - 执行指令
    CMD $CATALINA_HOME/bin/startup.sh && tail -F $CATALINA_HOME/bin/logs/catalina.out
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    2、遇到的问题描述

    1. tocmat解压失败

      检查应该在解压路径后添加一个/作为结尾

      不对,发现是映射路径的问题。。。

    2. 提示文件无法打开

      image-20230906161537491

      查看内容日志已经存在,但是报错无法读取?先隐藏

    3. 隐藏掉日志真是语句后,发现tomat会在启动后,容器就退出了

    3、解决方法

    ABA解决法,从网上找到一个dockerfile然后自己进行了修改,最终可以运行的版本如下:

    FROM centos:7
    MAINTAINER zhuhuacong
    
    # 安装必要的软件
    RUN  yum install -y java-1.8.0-openjdk-devel 
    
    # 下载并解压Tomcat
    ADD apache-tomcat-9.0.80.tar.gz /usr/local/
    
    # 暴露Tomcat端口
    EXPOSE 8080
    
    # 启动Tomcat
    CMD ["/usr/local/apache-tomcat-9.0.80/bin/catalina.sh", "run"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    可以发现几个不同的地方

    1. 直接从yum下载的jdk
    2. 启动tomcat的指令不同。

    验证测试,结果就是jdk和tomcat指令都有问题

    归因分析:

    • jdk下载了x86版本,并不适用于x64的系统
    • tomcat正确的启动指令应该是运行catalina.sh run

    在这个基础上,修改原dockerfile尝试

    第一次修改tomcat指令:

    # 新版
    FROM centos:7
    MAINTAINER zhuhuacong
    
    # 添加必备的文件 会自动解压
    ADD apache-tomcat-9.0.80.tar.gz /usr/local/
    ADD jdk-8u202-linux-x64.tar.gz /usr/local/
    
    
    # 切换到工作路径
    ENV MYPATH /usr/local
    WORKDIR $MYPATH
    # 添加环境变量配置
    ENV JAVA_HOME /usr/local/jdk1.8.0_202
    ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.80
    ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.80
    ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
    
    
    # 端口放开
    EXPOSE 8080
    
    # 启动Tomcat
    CMD ["/usr/local/apache-tomcat-9.0.80/bin/catalina.sh", "run"]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    —— 失败 报错如下

    image-20230906164201396

    第二次只修改jdk的安装方式3

    FROM centos:7
    MAINTAINER zhuhuacong
    
    # 安装必要的软件
    RUN  yum install -y java-1.8.0-openjdk-devel 
    
    # 下载并解压Tomcat
    ADD apache-tomcat-9.0.80.tar.gz /usr/local/
    
    # 暴露Tomcat端口
    EXPOSE 8080
    
    # 启动Tomcat
    CMD  /usr/local/apache-tomcat-9.0.80bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.80/bin/logs/catalina.out
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    ——也失败了

    image-20230906164636334

  • 相关阅读:
    Spring Statement 状态机应用实例
    处理器知识基础
    基础课2——自然语言处理
    flink连接kafka报:org.apache.kafka.common.errors.TimeoutException
    JavaWeb开发中为什么Controller里面的方法是@RequestMapping?
    关于windows下的System32与SysWOW64两个文件夹
    Python tkinter实现复刻Windows记事本UI和菜单的文本编辑器(二)
    Rc与Arc实现1vN所有权机制
    SqlServer常见攻击手法
    PMBOK史上最大的改版,你知道到底有什么精华嘛?
  • 原文地址:https://blog.csdn.net/Xcong_Zhu/article/details/132719300