SpringBoot2应用在Docker容器中异常停止,如何排查libawt.so导致的Exited(139)错误?

springboot2应用在docker容器中异常停止,如何排查libawt.so导致的exited(139)错误?

排查 Spring Boot 2 应用在 Docker 容器中异常停止的问题

本文分析并解决在 CentOS 8.5 系统上,使用 Docker 19.03.13 和 docker-compose 部署的 Spring Boot 2 应用在 Docker 容器中异常停止的问题。

问题现象:

两个相同的 Spring Boot 2 应用实例(pod1 和 pod2)均使用 huttool 图形验证码,基于自定义 Dockerfile 构建镜像。pod2 容器运行一段时间后异常退出,状态显示为 Exited(139),pod1 由于设置了 restart: always 而自动重启。日志显示 Java 运行时出现致命错误 SIGILL (0x4),错误源于 libawt.so。服务器内存 (32G) 充足,问题依然存在。

问题根源分析:

SIGILL (0x4) 信号代表非法指令错误,错误信息指向 libawt.so,这是 Java AWT (Abstract Window Toolkit) 库的一部分,用于处理图形界面。由于应用使用了 huttool 图形验证码,问题可能与 AWT 库的依赖冲突或缺失有关。

基础镜像 openjdk:8-jdk-alpine 是精简版 Java 运行环境,缺少完整的图形化环境库。虽然 Dockerfile 中安装了 ttf-dejavu 和 fontconfig 字体库,但 AWT 需要 X Window 系统支持,而该镜像并未包含。

解决方案:

建议尝试以下方法:

在 Dockerfile 中安装 X Window 系统库: 除了 ttf-dejavu 和 fontconfig,还需要安装 xorg-x11-utils 等 X Window 系统相关库(具体包名需根据 CentOS 版本选择)。重新构建镜像并部署。

更换基础镜像: 使用包含完整 Java 运行环境和图形化支持的镜像,例如一个包含 X Window 系统的镜像,避免依赖缺失。

提供 hs_err_pid1.log 文件: 该文件包含更详细的错误信息,有助于精确定位问题。

通过以上方法,可以尝试解决 libawt.so 导致的 Spring Boot 2 应用在 Docker 容器中异常停止的问题。 最终解决方案取决于具体的系统配置和应用依赖。

以上就是SpringBoot2应用在Docker容器中异常停止,如何排查libawt.so导致的Exited(139)错误?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2605951.html

(0)
上一篇 2025年3月6日 20:10:34
下一篇 2025年3月6日 12:29:16

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何利用Linux Swagger提升开发效率

    利用linux下的swagger(现更名为openapi specification)可以显著提升开发效率,主要通过以下几种方式实现: 1. 自动生成接口文档 Swagger能够自动扫描项目中的API接口,并生成包含接口名称、描述、请求参数…

    编程技术 2025年3月6日
    200
  • CentOS安装Nginx的方法

    这篇文章主要介绍了关于centos安装nginx的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 这篇文章主要介绍了关于centos安装nginx的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 为了…

    编程技术 2025年3月6日
    200
  • SpringCloud的微服务部署详解

    本篇文章给大家带来的内容是关于springcloud的微服务部署详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 微服务的其中一个特点就是有许许多的粒度小(功能单一,比如用户管理,短信发送管理,邮件发送管理,文件管理等)…

    2025年3月6日 编程技术
    200
  • centos怎么卸载软件

    yum(全称为 yellow dog updater, modified)是一个在fedora和redhat以及centos中的shell前端软件包管理器。基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系…

    2025年3月6日
    200
  • centos7系统无法访问tomcat

    一、检验防火墙是否启动 输入命令 ”  firewall-cmd –state ” 如果出现如图所示的这种情况说明正在运行,如果没有正在运行需要执行命令” systemctl start fi…

    2025年3月6日 编程技术
    200
  • centos系统无法访问tomcat

    1、启动tomcat 进入 tomcat 所在的目录的 bin 的文件夹下执行” sh startup.sh” 命令 启动 tomcat ,如果出现下面这种情况说明 tomcat 启动 成功。 (推荐教程:cento…

    2025年3月6日 编程技术
    200
  • 怎么把docker里面的文件拷贝出来

    从容器里面拷文件到宿主机: 在宿主机里面执行以下命令: docker cp 容器名:要拷贝的文件在容器里面的路径       要拷贝到宿主机的相应路径 登录后复制  示例:  假设容器名为testtomcat,要从容器里面拷贝的文件路为:/…

    2025年3月6日
    200
  • CentOS tomcat访问不了怎么办

    centos tomcat访问不了怎么办 步骤1、启动tomcat 进入 tomcat 所在的目录的 bin 的文件夹下执行” sh startup.sh” 命令 启动 tomcat ,如果出现下面这种情况说明 to…

    2025年3月6日 编程技术
    200
  • centos系统启动tomcat提示权限不够

    问题描述:  centos7中启动tomcat提示bash: tomcat8.0.39/bin/startup.sh: 权限不够 解决方法: (推荐教程:centos使用教程) 先进入bin目录 [root@localhost/]# cd …

    2025年3月6日
    200
  • docker如何运行项目

    1、进入存放自己项目war的目录 编辑Dockerfile文件 vim Dockerfile 登录后复制 内容如下: rom registry.docker-cn.com/library/tomcatMAINTAINER heihezi h…

    2025年3月6日
    200

发表回复

登录后才能评论