制作带有中文字体的 jdk 17 镜像

1. 准备中文字体

将所有需要添加的中文字体放进一个文件夹内,例如 fonts
在这里插入图片描述

2. 创建 Dockerfile 文件

Dockefile 文件与 fonts 文件夹放在同一目录下

# 使用 slim 版本的 jdk 17 镜像作为基础镜像
FROM openjdk:17-slim# 安装字体工具
RUN apt-get update && \apt-get install -y fontconfig && \rm -rf /var/lib/apt/lists/*# 创建存放字体的目录
RUN mkdir -p /usr/share/fonts/chinese# 将本地的字体文件复制到镜像中
COPY ./fonts /usr/share/fonts/chinese/# 更新字体缓存
RUN fc-cache -fv

3. 构建镜像

docker build -t openjdk:17-jre-slim-chinese .

构建过程日志

[+] Building 61.3s (10/10) FINISHED=> [internal] load .dockerignore                                                                                                                                                                              0.1s=> => transferring context: 2B                                                                                                                                                                                0.1s=> [internal] load build definition from Dockerfile                                                                                                                                                           0.1s=> => transferring dockerfile: 444B                                                                                                                                                                           0.1s=> [internal] load metadata for docker.io/library/openjdk:17-slim                                                                                                                                             3.4s=> [1/5] FROM docker.io/library/openjdk:17-slim@sha256:aaa3b3cb27e3e520b8f116863d0580c438ed55ecfa0bc126b41f68c3f62f9774                                                                                      28.4s=> => resolve docker.io/library/openjdk:17-slim@sha256:aaa3b3cb27e3e520b8f116863d0580c438ed55ecfa0bc126b41f68c3f62f9774                                                                                       0.0s=> => sha256:aaa3b3cb27e3e520b8f116863d0580c438ed55ecfa0bc126b41f68c3f62f9774 547B / 547B                                                                                                                     0.0s=> => sha256:779635c0c3d23cc8dbab2d8c1ee4cf2a9202e198dfc8f4c0b279824d9b8e0f22 953B / 953B                                                                                                                     0.0s=> => sha256:37cb44321d0423bc57266a3bff658daf00478e4cdf2d3b8091f785310534256d 4.80kB / 4.80kB                                                                                                                 0.0s=> => sha256:1fe172e4850f03bb45d41a20174112bc119fbfec42a650edbbd8491aee32e3c3 31.38MB / 31.38MB                                                                                                              10.0s=> => sha256:44d3aa8d076675d49d85180b0ced9daef210fe4fdff4bdbb422b9cf384e591d0 1.58MB / 1.58MB                                                                                                                 3.6s=> => sha256:6ce99fdf16e86bd02f6ad66a0e1334878528b5a4b5487850a76e0c08a7a27d56 187.90MB / 187.90MB                                                                                                            23.8s=> => extracting sha256:1fe172e4850f03bb45d41a20174112bc119fbfec42a650edbbd8491aee32e3c3                                                                                                                      4.5s=> => extracting sha256:44d3aa8d076675d49d85180b0ced9daef210fe4fdff4bdbb422b9cf384e591d0                                                                                                                      0.3s=> => extracting sha256:6ce99fdf16e86bd02f6ad66a0e1334878528b5a4b5487850a76e0c08a7a27d56                                                                                                                      4.4s=> [internal] load build context                                                                                                                                                                             10.6s=> => transferring context: 337.13MB                                                                                                                                                                         10.6s=> [2/5] RUN apt-get update &&     apt-get install -y fontconfig &&     rm -rf /var/lib/apt/lists/*                                                                                                          20.7s=> [3/5] RUN mkdir -p /usr/share/fonts/chinese                                                                                                                                                                0.4s=> [4/5] COPY ./fonts /usr/share/fonts/chinese/                                                                                                                                                               3.4s=> [5/5] RUN fc-cache -fv                                                                                                                                                                                     2.6s=> exporting to image                                                                                                                                                                                         2.1s=> => exporting layers                                                                                                                                                                                        2.1s=> => writing image sha256:6d19d72c7994a66498f3eec248fed6a09f35efaf6b2d1507c71e8e2d44b257e8                                                                                                                   0.0s=> => naming to openjdk:17-jre-slim-chinese                         
4. 确认字体安装
  1. 以新镜像启动容器
    docker run -it --rm openjdk:17-jre-slim-chinese bash
    
  2. 进入容器内部,查看字体
    root@2755c79aaf21:/# fc-list :lang=zh
    /usr/share/fonts/chinese/FZKTJW_0.TTF: FZKai\-Z03S,方正楷体简体:style=Regular
    /usr/share/fonts/chinese/SIMYOU.TTF: YouYuan,幼圆:style=Regular
    /usr/share/fonts/chinese/msyhbd.ttc: Microsoft YaHei UI:style=Bold,Negreta,tučné,fed,Fett,Έντονα,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiony,Negrito,Полужирный,Fet,Kalın,Krepko,Lodia
    /usr/share/fonts/chinese/FZXBSJW_0.TTF: FZXiaoBiaoSong\-B05S,方正小标宋简体:style=Regular
    /usr/share/fonts/chinese/FZSTK.TTF: FZShuTi,方正舒体:style=Regular
    /usr/share/fonts/chinese/Deng.ttf: DengXian,等线:style=Regular
    /usr/share/fonts/chinese/FZHTJW_0.TTF: FZHei\-B01S,方正黑体简体:style=Regular
    /usr/share/fonts/chinese/simsun.ttc: SimSun,宋体:style=Regular,常规
    

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

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

相关文章

Xilinx 7系列FPGA 高性能(HP)接口与2.5V/3.3V 外设IO接口设计考虑

引言:Xilinx 7系列FPGA IO Bank分为HP Bank和HR Bank,HP IO接口电压范围为1.2V~1.8V,可以实现高性能,HR IO接口电压范围为1.2V~3.3V。当HR Bank与2.5V或者3.3V外设互联时,需要考虑接口电平的兼容性。根据性能需求、功能…

模拟相机拍照——对文档进行数据增强

一. 背景 假如我们有一个标准文件,我们对其进行文字识别、版面分析或者其他下游任务就比较容易。然而,当图片是手机拍照获取的,图片中往往有阴影、摩尔纹、弯曲。 那么,如何通过标准的文档,获得类似相机拍照的图片呢&…

更新kubeadm创建的集群的证书

需要熟悉的知识: 官网更新证书参考:https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/ 静态Pod:https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/#static-pods 如何创建静态Pod:https://kuberne…

家庭营销广告Criteo公司首次获得MRC零售媒体测量认证

家庭营销广告Criteo公司首次获得零售媒体测量MRC认证 商业媒体公司Criteo2024年3月28日宣布,它首次获得媒体评级委员会(MRC)的认证,在其企业零售媒体平台commerce Max和commerce Yield上,在桌面、移动网络和移动应用内…

数据库函数ABS详解

ABS函数的语法是:ABS(number),其中number是要计算绝对值的数字或表达式。例如,如果要计算-5的绝对值,可以使用以下查询: SELECT ABS(-5) FROM dual;这将返回结果为5。 在Oracle中,ABS是一个内置…

4-Java方法详解

目录 Java方法详解 1、什么是方法 2、方法的定义及调用 3、方法重载 4、命令行传参 5、可变参数 6、递归 例题:代码实现一个计算机 Java方法详解 1、什么是方法 2、方法的定义及调用 形参:用来定义作用的 实参:实际调用传递给他的参数…

java | junit | 基本+技巧

1.参考链接 1.1 单测概念 https://medium.com/lathasreeseeni/junit-2d9857773e8 1.2 高级技巧 https://symflower.com/en/company/blog/2023/how-to-write-junit-test-cases-advanced-techniques/ assertThrows: 有时候,我们的方法,需要抛出…

ES系列之相似度模型

概述 ES作为一款搜索引擎,搜索结果如何排序,即什么条目或内容更靠前,是一个很核心的问题。排序通常是通过计算语料库中的文档和用户查询之间的相关性或相似度评分来进行。 相似性(得分/排名模型)定义匹配文档如何进行…

C#基于SSE传递消息给Vue前端实现即时单向通讯

一、简述 通常前端调用后端的API,调用到了,等待执行完,拿到返回的数据,进行渲染,流程就完事了。如果想要即时怎么办?如果你想问什么场景非要即时通讯,那可就很多了,比如在线聊天、实…

libwebsockets 简介

文章目录 1. 前言2. libwebsockets 的 编译 和 使用2.1 编译2.2 使用2.2.1 构建运行上下文2.2.2 事件处理循环 3. websocket 协议 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. libwebsockets…

EASERVER管理密码忘记的处理方式

一个多年的老客户,EASERVER的管理员密码忘记了,查了一些资料,把它重置了,做个记录 This is a really quick tip on how to reset password for the administrator id “jagadmin” used in EA Server. We use this id for everyt…

Java 笔记 01:Java 概述,MarkDown 常用语法整理

一、前言 记录时间 [2024-04-18] 昨天整理完 Docker 基础后略微思索了一下,还是决定把 Java 捡起来,系统地学习一遍,参考的学习课程是狂神说 Java 零基础,真诚感激此系列视频对笔者的帮助。 零基础可以学 Java 吗?只要…

JVS低代码平台表单引擎:字符串拼接与逻辑函数的完美结合

字符串拼接使用逻辑函数配置 示例场景:通过按钮触发逻辑使用函数将两个日期字段组合为范围时间类型。 选择开始日期和结束日期后,点击【合并】按钮自动处理回显至起止日期字段。在【合并】按钮上设置逻辑。 注意:这里【起止日期】组件是数组…

【web开发02】后端开发Maven

后端开发Maven 1 Maven是什么?1.1 Maven基础概念1.1.2 仓库1.1.3 坐标 2 配置maven环境3 创建maven项目4 导入maven项目4 依赖管理4.1 依赖配置4.2 依赖传递4.2.1 排除依赖 4.3 依赖范围4.4 生命周期4.4.1 运行生命周期 1 Maven是什么? Maven本质是项目…

无梯度计算模式

无梯度计算模式是指在进行优化、求解或模型训练时,不依赖于目标函数或其相关组件(如损失函数、约束函数等)的梯度信息来指导搜索或更新过程的方法。这种模式适用于以下几种情况: 梯度不可用或难以计算: 目标函数可能包…

android和java 线程Tread

1。线程的生命周期。 可以分为创建,就绪,运行,阻塞,死亡 5个状态。 1.1 创建 new :当程序new了一个线程后,线程就处于新建状态,这时候他和其他 java对象一样,被java虚拟机分配了内存,但没有线程的特性。 …

idea 切换分支后 Project目录树小消失

idea 切换分支后 Project目录树小消失 生气了 生气了 若代码已经保存提交,直接删除本地项目,重新拉取。

二次元AI绘画生成器免费:教你生成精美图片

二次元AI绘画生成器,无疑是现代技术与艺术完美结合的典范。这些工具不仅将复杂的绘画过程简化,更让每一个艺术爱好者的创意得以充分展现。这些生成器能够精准捕捉大家的创意精髓,将其转化为细腻、独特的二次元画作。无论是角色设计、场景描绘…

SpringMVC(五)【拦截器】

前言 今天来把 SpringMVC 最后一部分学完,虽然课时很短,但是学起来还是很慢的,不过确收获很大。不得不感慨学大数据确实有必要把 SSM、SpringBoot 等各种 JavaEE 技术好好学一学,收获很大,尽管我们到现在 Java 代码写了…

Redis几种常见的应用方式

1.登录认证 redis最常见的应用就是,登录认证把。再首次登录返回给前端token,把用户名和登录状态缓存到redis一段时间,每次其他请求进来过滤器那这token解析出来的用户名或其他关键的key值,再redis里面查询缓存,有则直…