基于alpine构建jdk镜像遇到的坑

alpine常用于作为 docker的基础镜像,因为它很小,功能精简,基本上没有啥漏洞,记录一下最近用 alpine作为基础镜像构建 java 8镜像 下面的问题在 oracle jdk openjdk都会出现 。

这个错误一般出现在生成验证码绘制的时候,这个错误大概原因就是由于在 alpine上太过于精简了,导致初始化 FontManagerFactory工厂初始化失败,那么解决办法就是安装 glibc
网上有很多博主都只讲安装了 glib.apk 核心包就行,其实这里需要安装3个包 以 2.3.0为例 需要安装的包为

安装命令如下

安装完后就没有问题了,测试方法 可以写一个main方法在容器中验证是否能执行通过 Class.forName("sun.awt.X11FontManager");,当在验证码不可行环境的时候 报错的消息为

/usr/local/jdk1.8.0_301/jre/lib/amd64/libfontmanager.so: libgcc_s.so.1: cann......

还有就是可以进入在运行中的容器直接安装 安装完成了之后基本上就没有问题了。

该错误在openJDK中出现过,OracleJDK没有出现。

解决方式就安装zlib 安装命令如下

安装好后 没有问题了

另贴上基于 alpine的阿里 dragonwell openjdk的Dockerfile

dragonwell JDK Dockerfile

Original: https://www.cnblogs.com/peachyy/p/15538550.html
Author: peachyy
Title: 基于alpine构建jdk镜像遇到的坑

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622156/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Yarn安装与配置

    使用 npm 命令安装 *在此之前必须已经安装了 node 和 npm (node自带npm) 全局安装 npm install -g yarn 环境变量–配置环境变量…

    Java 2023年5月29日
    069
  • == 和 equals 的区别是什么?

    ==:基本类型比较的是值的大小,引用类型比较的是内存地址,是不是同一个对象,equals:默认比较同一个对象的内容 == 和 equals 的区别是什么? == : 它的作用是判断…

    Java 2023年6月13日
    071
  • 从 KeyStore 中获取 PublicKey 和 PrivateKey

    KeyStore(译:密钥存储库) 代表用于加密密钥和证书的存储设施。 KeyStore 管理不同类型的 entry(译:条目)。每种类型的 entry 都实现了 KeyStore…

    Java 2023年6月7日
    085
  • JVM-堆

    堆 JAVA技术交流群:737698533 堆核心概述 此内存区域的唯一目的就是存放对象实例 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 Java堆区在JV…

    Java 2023年6月6日
    074
  • 哈工大软件构造Lab1(2022)

    目录 一、实验目标概述 二、实验环境配置 1、安装编写java程序的IDE——IntelliJ IDEA 2、安装Git 3、安装Junit 4、GitHub Lab1仓库的URL…

    Java 2023年6月9日
    096
  • 戏说领域驱动设计(廿二)——聚合

    聚合的自白 大家好,我是聚合,在你们的期盼之下我终于出来了。其实早就想和大家见一面,不过作者每天总想着水流量,到现在才让我出来。他把实体和值对象这两个我家庭内的成员先介绍让我感觉非…

    Java 2023年6月7日
    061
  • 【java】java基本用法记录

    java用法总结 计时 long startTime = System.nanoTime(); solution.process(inputFile); long endTime …

    Java 2023年5月29日
    080
  • 【Java】【53】map的containsKey()及containsValue()方法

    前言: containsKey():map中是否包含某个key值 containsValue():map中是否包含某个value值 正文: 参考博客: Original: http…

    Java 2023年5月29日
    0103
  • 面试官:线程池如何按照core、max、queue的执行循序去执行?(内附详细解析)

    前言 这是一个真实的面试题。 前几天一个朋友在群里分享了他刚刚面试候选者时问的问题: “线程池如何按照core、max、queue的执行循序去执行?”。 我…

    Java 2023年5月30日
    094
  • 阿里云MQTT + STM32 + MQTT + ESP8266 01S WIFI 实现远程继电器控制开关和采集温湿度

    登录阿里云网站,进入物联网云平台进入阿里云官网并登录账号后进入物联网云平台地址:https://iot.console.aliyun.com/lk/summary/new 开发板实…

    Java 2023年5月30日
    089
  • 【Java】Object 的 clone 方法分析

    学习视频:https://study.163.com/course/introduction/1006177009.htm 学习目标 能够理解clone方法的由来 能够使用clon…

    Java 2023年6月7日
    087
  • JavaWeb-Servlet基础

    前言 Servlet是 JavaWeb中最核心的组件. Servlet规范为 JavaWeb应用制定了对象模型: 请求对象(ServletRequest): Servlet从该对象…

    Java 2023年5月29日
    070
  • RandomStringUtils 生成随机字符串

    代码: System.out.println(RandomStringUtils.randomAlphanumeric(32));System.out.println(Random…

    Java 2023年6月7日
    092
  • 设计模式之策略模式

    在一个收银系统中,如果普通用户、中级会员、高级会员分别对应着不同的优惠策略,常规编程就要使用一系列的判断语句,判断用户类型,这种情况下就可以使用策略模式。 一、概念理解 策略模式的…

    Java 2023年6月8日
    0103
  • Elasticsearch+kibana+logstash 搭建日志收集分析平台

    Elasticsearch+kibana+logstash 搭建日志收集分析平台 环境搭建: 虚拟机内存配置: sysctl -w vm.max_map_count=262144 …

    Java 2023年6月8日
    088
  • pyhon——进程线程、与协程基础概述

    一直以来写博客都是实用主义者,只写用法,没信心写原理,但是每一次写作业的过程都有一种掘地三尺的感觉,终于,写博客困难症重症患者经历了漫长的思想斗争,还是决定把从网上淘到的各种杂货和…

    Java 2023年5月30日
    080
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球