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

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

问题留档

1、场景描述

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

FROM centos:7
MAINTAINER zhuhuacong<zhc_yes@126.com># 添加必备的文件 会自动解压
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

2、遇到的问题描述

  1. tocmat解压失败

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

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

  2. 提示文件无法打开

    image-20230906161537491

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

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

3、解决方法

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

FROM centos:7
MAINTAINER zhuhuacong<zhc_yes@126.com># 安装必要的软件
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. 直接从yum下载的jdk
  2. 启动tomcat的指令不同。

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

归因分析:

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

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

第一次修改tomcat指令:

# 新版
FROM centos:7
MAINTAINER zhuhuacong<zhc_yes@126.com># 添加必备的文件 会自动解压
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"]

—— 失败 报错如下

image-20230906164201396

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

FROM centos:7
MAINTAINER zhuhuacong<zhc_yes@126.com># 安装必要的软件
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

——也失败了

image-20230906164636334

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/101802.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】DICOM医学影像工作站PACS源码

PACS即影像存档与传输系统&#xff0c;是医学影像、数字化图像技术、计算机技术和网络通讯技术相结合的产物&#xff0c;是处理各种医学影像信息的采集、存储、报告、输出、管理、查询的计算机应用程序。 PACS是基于DICOM标准的医学影像管理系统&#xff0c;其模块覆盖了从影像…

CESM2代码下载

这半年忙着毕业写论文&#xff0c;好久好久好久不更新了∠( ω)&#xff0f; &#xff0c;今天准备开个新坑 ๑乛◡乛๑&#xff0c;学习一下CESM&#xff08;Community Earth System Model&#xff09;&#xff0c;它是一个完全耦合的全球气候模型&#xff0c;可用于地球过去、…

微信小程序开发---事件的绑定

目录 一、事件的概念 二、小程序中常用的事件 三、事件对象的属性列表 四、bindtap的语法格式 &#xff08;1&#xff09;绑定tap触摸事件 &#xff08;2&#xff09;编写处理函数 五、在事件处理函数中为data中的数据赋值 六、事件传参 七、bindinput的语法格式 八、…

[Vue3 博物馆管理系统] 使用Vue3、Element-plus的Layout 布局构建组图文章

系列文章目录 第一章 定制上中下&#xff08;顶部菜单、底部区域、中间主区域显示&#xff09;三层结构首页 第二章 使用Vue3、Element-plus菜单组件构建菜单 第三章 使用Vue3、Element-plus走马灯组件构建轮播图 第四章 使用Vue3、Element-plus tabs组件构建选项卡功能 第五章…

邮件钓鱼的防守策略

一、攻击背景 在历年的实战攻防演练中&#xff0c;人的漏洞是网络安全最大的脆弱点&#xff0c;而钓鱼攻击就是从内部攻破堡垒至关重要的手段。攻击者通过伪装成可信来源发送虚假邮件&#xff0c;诱导接收者点击恶意链接、提供敏感信息或执行恶意附件&#xff0c;从而获取机密…

[LeetCode]栈,队列相关题目(C语言实现)

文章目录 LeetCode20. 有效的括号LeetCode225. 用队列实现栈LeetCode232. 用栈实现队列LeetCode622. 设计循环队列 LeetCode20. 有效的括号 题目 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有…

合宙Air724UG LuatOS-Air LVGL API控件-键盘 (Keyboard)

键盘 (Keyboard) LVGL 可以添加触摸键盘&#xff0c;但是很明显&#xff0c;使用触摸键盘的话必须要使用触摸的输入方式&#xff0c;否则无法驱动键盘。 示例代码 function keyCb(obj, e)-- 默认处理事件lvgl.keyboard_def_event_cb(keyBoard, e)if(e lvgl.EVENT_CANCEL)the…

一百七十二、Flume——Flume采集Kafka数据写入HDFS中(亲测有效、附截图)

一、目的 作为日志采集工具Flume&#xff0c;它在项目中最常见的就是采集Kafka中的数据然后写入HDFS或者HBase中&#xff0c;这里就是用flume采集Kafka的数据导入HDFS中 二、各工具版本 &#xff08;一&#xff09;Kafka kafka_2.13-3.0.0.tgz &#xff08;二&#xff09;…

QT—基于http协议的网络文件下载

1.常用到的类 QNetworkAccessManager类用于协调网络操作&#xff0c;负责发送网络请求&#xff0c;创建网络响应 QNetworkReply类表示网络请求的响应。在QNetworkAccessManager发送一个网络请求后创建一个网络响应。它提供了以下信号&#xff1a; finished()&#xff1a;完成…

Net跨平台UI框架Avalonia入门-安装和使用(v11版本)

介绍Avalonia v11版本 avalonia v11版本发布了&#xff0c;增加了很多新的功能&#xff0c;Avalonia的扩展也同步升级了。 主要更新内容&#xff1a; 辅助功能&#xff1a;增加了对各种辅助工具的支持&#xff0c;提高了Avalonia应用程序的可用性。输入法编辑器&#xff08;I…

video标签自动播放音视频并绘制波形图

html中的<video>标签可以用来播放常见的音视频格式&#xff0c;支持的格式包括:MP3、Ogg、WAV、AAC、MP4、WebM、AVI等&#xff0c;当然支持的格式也和浏览器和操作系统有关。这里以一个可以自动播放音视频并绘制波形图的页面为例说明一下<video>标签的用法。 vid…

LAMP搭建WordPress

L linux A apache hhtpd M mysql/maridb P PHP1、 安装php yum -y install php php-fpm php-server php-mysql1.1、 启动php-fpm并自启 systemctl enable php-fpm --now[rootecs-1cee ~]# systemctl status php-fpm ● php-fpm.service - The PHP FastCGI Process ManagerLoa…