制作带有中文字体的 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外设互联时,需要考虑接口电平的兼容性。根据性能需求、功能…

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

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

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

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

4-Java方法详解

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

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

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

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本质是项目…

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

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

SpringMVC(五)【拦截器】

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

Redis几种常见的应用方式

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

【算法】二分查找

快乐的流畅:个人主页 个人专栏:《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 引言一、二分查找二、查找元素的第一个和最后一个位置三、x的平方根四、搜索插入位置五、山脉数组的峰顶索引…

【Leetcode每日一题】 分治 - 排序数组(难度⭐⭐)(60)

1. 题目解析 题目链接:912. 排序数组 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 算法思路: 快速排序作为一种经典的排序算法,其核心思想在于通过“分而治之”的策略&#xff…

eCongnition 根据栅格类别图分类分割结果

目录 1、导入标签文件 2、根据栅格类别计算对象类别 3、导出栅格计算的类别 1、导入标签文件 导入栅格类别文件Label.tif 参考:eCongnition 对图像进行多尺度分割-CSDN博客 2、根据栅格类别计算对象类别 对类别栅格创建 mode[Maximum] 特征,该特征…

SQL Serve---嵌套查询

定义 嵌套查询:主要用于复杂的查询中。在SQL语言中,一个Select From Where语句称为一个查询块,将一个查询块嵌套在另一个查询的Where子句或Having短语中的查询称为嵌套查询。 子查询的类型 使用别名的子查询 使用IN和NOT IN的子查询 使用比较…

基于SSM的列车订票管理系统(含源码+sql+视频导入教程+文档+PPT)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的列车订票管理系统3拥有两种角色;管理员、用户 管理员:用户管理、车票管理、购票指南管理、系统管理等 用户:发布帖子、登录注册、购票等 1.…

数据结构速成--串

由于是速成专题,因此内容不会十分全面,只会涵盖考试重点,各学校课程要求不同 ,大家可以按照考纲复习,不全面的内容,可以看一下小编主页数据结构初阶的内容,找到对应专题详细学习一下。 目录 …

【Linux冯诺依曼体系结构】

目录 1.冯诺依曼体系结构原理 1.冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。 截至目前,我们所认识的计算机,都是有一个个的硬件组件组成 输入单元&#…

最新SpringBoot项目财务管理系统

采用技术 最新SpringBoot项目财务管理系统的设计与实现~ 开发语言:Java 数据库:MySQL 技术:SpringBootMyBatis 工具:IDEA/Ecilpse、Navicat、Maven 页面展示效果 系统登录页面 管理员功能 管理员功能页面 员工管理页面 部…

SpringBoot多数据源(五)

SpringBoot多数据源-集成多个mybatis框架 1.基本框架2.使用2.1项目结构2.2 依赖导入2.3 application.yml配置2.4 创建读与写的SqlSessionFactoryBean 3.总结 1.基本框架 通过启动多个SqlSessionFactoryBean,每个SqlSessionFactoryBean对应一个datasource和指定位置的…