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

news2024/11/26 16:31:46

写在前面, 其实是一个比较摸不着脑袋的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.coloradmin.cn/o/980003.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【办公类-18-02】(Python)教师获奖证书批量打印(教师信息、获奖类型,公章)

背景需求&#xff1a; 同事提出给word批量“添加电子公章&#xff08;png图片&#xff09;的需求 解压文件后&#xff0c;发现&#xff1a; 1、每份WORD文件名是一位老师的证书&#xff0c;需要打开每一份word&#xff0c;插入一个空白电子公章png。 2、每个word文件名包含教…

Redis缓存的高并发问题

Redis 做缓存虽减轻了 DBMS 的压力&#xff0c;减小了 RT&#xff0c;但在高并发情况下也是可能会出现各 种问题的。 1 缓存穿透 当用户访问的数据既不在缓存也不在数据库中时&#xff0c;就会导致每个用户查询都会“穿透” 缓存“直抵”数据库。这种情况就称为缓存穿透。一个…

SSL证书系列--又拍云Let’s Encrypt免费DV SSL证书使用教程

原文网址&#xff1a;SSL证书系列--又拍云Let’s Encrypt免费DV SSL证书使用教程_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何使用又拍云部署Let’s Encrypt免费DV SSL证书。 一、了解Let’s Encrypt 了解和关注SSL证书的朋友&#xff0c;似乎没有理由不知道 Let’s Encr…

java八股文面试[数据库]——数据库锁的种类

数据库锁的种类 MySQL数据库由于其自身架构的特点,存在多种数据存储引擎, MySQL中不同的存储引擎支持不同的锁机制。 MyISAM和MEMORY存储引擎采用的表级锁&#xff0c; InnoDB存储引擎既支持行级锁&#xff0c;也支持表级锁&#xff0c;默认情况下采用行级锁。 BDB采用的是页…

开店星小程序上架教程和后台Request failed with status code 500[undefined]问题处理

开店星小程序上架教程和后台Request failed with status code 500[undefined]问题处理 刚刚安装好开店星网站后台之后都会出现这个code 500[undefined]的错误&#xff0c;需要改一下代码。改好了之后就可以正常使用了。如果大家不懂得这样处理的可以私聊我&#xff0c;帮忙处理…

kettle通过java步骤获取汉字首拼

kettle通过java步骤获取汉字首拼 用途描述 一组数据&#xff0c;需要获取汉字首拼后&#xff0c;输出&#xff1b; 实现效果 添加jar包 pinyin4j-2.5.0.jar 自定义常量数据 Java代码 完整代码&#xff1a; import net.sourceforge.pinyin4j.PinyinHelper; import net.sou…

高潮迭起:探寻Twitch上精彩纷呈的电子竞技赛事直播

Twitch是电子竞技赛事的热门直播平台之一,它为全球范围内的电子竞技比赛提供了广泛的覆盖和直播服务。以下是一些在Twitch上直播的电子竞技比赛和赛事的例子: League of Legends (英雄联盟) Twitch广泛直播英雄联盟的各个赛事,包括全球性的锦标赛如英雄联盟全球总决赛(World …

SLAM从入门到精通(基本框架)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 SLAM是机器人的一个分支。广义上来说&#xff0c;机器人还包括了计算机视觉、语音识别、自然语言处理、机械臂控制、运动控制、机器人导航、机器人…

软件架构师 设计和编码

软件架构师 设计和编码 目录概述需求&#xff1a; 设计思路实现思路分析1.设在设计软件架构时&#xff0c;您需要考虑以下方面&#xff1a;2.在编码方面&#xff0c;您需要具有以下技能&#xff1a; 参考资料和推荐阅读 Survive by day and develop by night. talk for import …

如何绘制英语思维导图?偷偷告诉你这个绘制方法

如何绘制英语思维导图&#xff1f;绘制英语思维导图可以帮助我们更好地理清思路&#xff0c;提高学习和工作效率。同时&#xff0c;英语思维导图还可以帮助我们提高英语表达能力和阅读理解能力&#xff0c;让我们更好地掌握英语学习和应用。因此&#xff0c;绘制英语思维导图是…

msvcr120.dll放在哪里?怎么修复msvcr120.dll文件

当您在运行某些应用程序或游戏时遇到“msvcr120.dll缺失”错误时&#xff0c;这可能会影响您的使用体验。msvcr120.dll是Microsoft Visual C Redistributable的一部分&#xff0c;并且它提供了程序运行所需的运行时支持&#xff0c;今天我们来讨论一下msvcr120.dl文件缺失了要怎…

[SSM]MyBatisPlus高级

四、高级篇 4.1主键策略 主键的作用就是唯一标识&#xff0c;我们可以通过这个唯一标识来定位到这条数据。对于表数据中的主键&#xff0c;我们可以自己设计生成规则&#xff0c;生成主键。但是在更多的场景中&#xff0c;没有特殊要求的话&#xff0c;我们每次自己手动生成的…

第 2 章 线性表(线性表的动态分配顺序存储结构实现)

1. 背景说明 线性表(linear Iist)是最常用且最简单的一种数据结构。简言之&#xff0c;一个线性表是 n 个数据元素的有限序列。 至于每个数据元素的具体含义&#xff0c;在不同的情况下各不相同&#xff0c;它可以是一个数或一个符号&#xff0c;也可以是一页书&#xff0c;甚…

千粉福利——— ubuntu安装

&#xff08;一&#xff09;配置虚拟机&#xff0c;首先打开虚拟机 点击创建新的虚拟机或者左上角文件->新建虚拟机&#xff0c;或者使用快捷键CtrlN,选择自定义安装 选择虚拟机就硬件兼容性&#xff0c;默认点击下一步就好 安装客户机操作系统&#xff1a;选择稍后安装操作…

tensorflow QAT

tensorflow qat https://www.wpgdadatong.com/tw/blog/detail/70672 在边缘运算的重点技术之中&#xff0c;除了简化复杂的模块构架&#xff0c;来简化参数量以提高运算速度的这项模块轻量化网络构架技术之外。另一项技术就是各家神经网络框架&#xff08;TensorFlow、Pytorc…

Day7:浅谈useEffect

「目标」: 持续输出&#xff01;每日分享关于web前端常见知识、面试题、性能优化、新技术等方面的内容。 Day7-今日话题 useEffect 是 React 中一个非常重要的 Hook&#xff0c;用于处理副作用和订阅外部数据源的变化。它可以在函数式组件中执行各种操作&#xff0c;例如数据获…

小程序如何上传微信聊天记录的文件

wx.chooseMessageFile({count: 10,type: image,success (res) {// tempFilePath可以作为img标签的src属性显示图片const tempFilePaths res.tempFiles} })参数说明 回调函数说明

数据库实现学生管理系统

1.QT将数据库分为三个层次&#xff1a; 1> 数据库驱动层&#xff1a;QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorBase、QSqlDriverPlugin 2> sql接口层&#xff1a;QSqlDatabase、QSqlQuery、QSqlRecord、QSqlError 3> 用户接口层&#xff1a;提供一些模型QSql…

开眼“观天”,从墨迹天气服贸会之旅看气象服务新未来

今年夏天&#xff0c;天气焦人。先是高温早早上线&#xff0c;然后台风来势汹汹&#xff0c;北京高温、河北暴雨&#xff0c;杜苏芮、苏拉、海葵轮番“奔袭”&#xff0c;极端气象事件频繁登上热搜&#xff0c;其险象环生的过程&#xff0c;让大众对气候问题的关注度节节走高。…

架构师 软件测试

架构师 软件测试 目录概述需求&#xff1a; 设计思路实现思路分析1.软件测试方法 软件测试工具 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for c…