springboot2 应用部署至 docker 容器后异常停止的排查
本文针对 SpringBoot2 应用在 Docker 容器中运行时出现异常停止的问题进行分析和解答。该问题主要体现在容器日志中显示 Exited (139) 状态码,并伴随 libawt.so 相关的错误信息。
问题描述中,开发人员使用 Docker 19.03.13 版本,Docker Compose 部署两个相同的 SpringBoot 应用实例(pod1 和 pod2),均分配 9G 内存。应用使用了 hutool 图形验证码,并基于 openjdk:8-jdk-alpine 镜像构建了自定义镜像。pod2 容器运行一段时间后异常停止,pod1 容器则由于设置了 restart: always 而自动重启。
容器日志显示 Java 运行时环境检测到致命错误 SIGILL (0x4),并在 libawt.so 库中出现问题。 ldd libjawt.so 命令的输出表明缺少 libawt_xawt.so 库,这导致 libjawt.so 库无法正确加载。
虽然系统内存充足,但 libawt.so 相关的错误提示强烈暗示问题并非内存不足,而是缺少必要的依赖库。 openjdk:8-jdk-alpine 镜像是一个精简版的 Java 运行时环境,默认不包含 AWT(抽象窗口工具包)相关的库,而 AWT 库是 hutool 图形验证码功能所依赖的。因此,仅仅安装 ttf-dejavu 和 fontconfig 还不够,因为这些库只是字体相关的,而 AWT 还需要更多图形相关的库文件。
建议尝试以下解决方案:
通过以上步骤,可以尝试解决 SpringBoot 应用在 Docker 容器中因缺少图形化依赖而导致异常停止的问题。
以上就是SpringBoot2应用在Docker中异常停止(Exited 139)并提示libawt.so错误,该如何解决?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号