目录

1、简述

2、镜像制作(基于centos7)

2.1 前期准备

java8包

需要用到的字体

2.2 配置Dockerfile文件

2.3 打包镜像

2.4 验证

3、镜像制作(基于openjdk)

3.1 配置Dockerfile文件

3.2 打包镜像

3.3 验证

4、镜像包大小比较


1、简述

一般官方的java镜像都没有中文语言包,不支持中文字体,而有时因项目需求,java程序会调用系统的字体,需要镜像支持自定义中文字体,此时就需要手动将需要的字体打包放进镜像中。以下内容将介绍如何快速制作一个添加自定义字体的java初始环境镜像,介绍方法包含两种制作方式:一种是基于centos的官方镜像进行添加java环境和自定义字体打包java镜像;另外一种方式是通过openjdk的官方java镜像直接添加自定义字体进行打包

2、镜像制作(基于centos7)

2.1 前期准备

此镜像是由centos7为初始镜像制作,因此前期需要准备所需的java8安装包及需要用到的字体(此例是使用windows自带的楷体)

java8包

java官网下载地址:https://www.oracle.com/java/technologies/downloads/

选择linux的x64版本,此处需要登陆才能下载,最后将下载的包上传到服务器上

需要用到的字体

此例以windows自带的楷体楷体为例
打开目录:C:\Windows\Fonts,找到楷体,上传到服务器

2.2 配置Dockerfile文件

先下载需要用到的centos镜像,此处使用的是centos7.9版本,拉去镜像命令如下:

docker pull centos:7.9.2009

创建Dockerfile文件:

FROM centos:7.9.2009#配置中文语言
RUN yum install kde-l10n-Chinese -y && yum reinstall glibc-common -y && localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
ENV LC_ALL zh_CN.UTF-8
#安装字体管理及新增字体
RUN yum install fontconfig -y
COPY chinese/ /usr/share/fonts/chinese/
RUN chmod -R 755 /usr/share/fonts/chinese && fc-cache -fv
#配置JAVA
ADD jdk-8u331-linux-x64.tar.gz /opt/
ENV JAVA_HOME /opt/jdk1.8.0_331
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib:$JRE_HOME/lib
ENV PATH $PATH:$JAVA_HOME/bin

2.3 打包镜像

进入Dockerfile文件所在目录,查询当前的目录结构如下:

镜像打包命令:
docker build -t java_chinese:jdk-8u331 .

打包完成日志如下:

2.4 验证

镜像制作完成后,可以通过创建临时测试容器的方式来验证java服务及字体语言环境是否配置成功

首先创建测试容器,命令如下:

docker run -it --name test java_chinese:jdk-8u331

注意:容器创建完成后会直接进入容器内部,如果退出容器,容器是会自动停止的,因为打包容器镜像时,没有要求执行任何操作

创建容器后,在容器中查询系统语言环境是否配置生效(中文编码:zh_CN.UTF8):
locale

查询自定义字体(此处为楷体)是否拷贝成功:

fc-list

查询java环境是否配置成功:

java -version

3、镜像制作(基于openjdk)

此方法是基于openjdk镜像制作,因此原始镜像中已经存在了java环境,只需要将需要用到的字体打包进镜像中即可,此例是使用windows自带的楷体,将字体上传到服务器的Dockerfile相同目录下即可

3.1 配置Dockerfile文件

提前下载需要用到的openjdk镜像:docker pull openjdk:8u332-jre

创建Dockerfile文件,将字体放入镜像中,文件内容如下:

FROM openjdk:8u332-jre#配置deb源
RUN echo "a deb http://mirrors.ustc.edu.cn/debian buster main contrib non-free" >> /etc/apt/sources.list \&& echo "a deb http://mirrors.ustc.edu.cn/debian buster-backports main contrib non-free" >> /etc/apt/sources.list \&& echo "a deb http://mirrors.ustc.edu.cn/debian buster-proposed-updates main contrib non-free" >> /etc/apt/sources.list \&& echo "a deb http://mirrors.ustc.edu.cn/debian-security buster/updates main contrib non-free" >> /etc/apt/sources.list \&& apt-get clean \&& apt-get update
#配置中文语言
RUN apt-get install locales -y
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
ENV LANG zh_CN.utf8
#安装字体管理及新增字体
COPY chinese/ /usr/share/fonts/chinese/
RUN chmod -R 755 /usr/share/fonts/chinese && fc-cache -fv

3.2 打包镜像

打包镜像前,查询Dockerfile所处目录的目录结构:

打包镜像命令:

docker build -t java_chinese:openjdk-8u332 .

3.3 验证

同之前一样,创建测试容器验证镜像环境是否配置成功,启动容器命令如下:

docker run -it --name test1 java_chinese:openjdk-8u332

查询系统语言环境是否配置为中文(中文编码:zh_CN.utf8):

locale

查询字体是否拷贝成功:

fc-list

java环境验证:

4、镜像包大小比较

打包过程相差不大,最后查询一下镜像大小,大小有一定的差距,明显使用openjdk的镜像要比使用centos7的镜像小,这个主要是java使用的包不同导致的,对java没有特殊需求的,建议使用openjdk的打包方式

说明:因为centos上传的java包是官方的java环境,而openjdk使用的java环境是进行了一定的阉割。因此,使用openjdk制作的镜像包可能会导致有些java程序无法运行,此时可以使用官方的java环境进行自定义打包,或者使用openjdk镜像将运行java程序所却少的依赖包安装上去,重新进行镜像制作即可

------------------日常运维------------------

dockerfile制作自定义字体的java环境镜像相关推荐

  1. unity 字体width_Unity中制作自定义字体

    使用Unity中的Sprite.Unity支持把一个Sprite切割成多个. 需要手动做的工作是将图集的TextureType设置为Sprite,然后把SpriteMode设为Multiple,打开S ...

  2. Docker制作含字体库的OpenJdk镜像

    最近项目上测试环境,测试测一个导出模板的功能时,发现模板导出出来,于是我在本地试了一下,结果正常导出,同一份代码部署到测试怎么就不一样了呢,无奈只能查看服务器日志,发下如下错误: java.lang. ...

  3. fontforge制作自定义字体及在手机上应用举例——张鑫旭

    一.看似无关紧要的事件背景 之所以花时间折腾fontforge这个软件,去制作什么自定义的字体是有原因滴. 之前提过,最近我抽空将公司的手机软件HTML5网页化.期间碰到这么一个问题,页面低栏上的电话 ...

  4. fontforge制作自定义字体及在手机上应用举例

    一.看似无关紧要的事件背景 之所以花时间折腾fontforge这个软件,去制作什么自定义的字体是有原因滴. 之前提过,最近我抽空将公司的手机软件HTML5网页化.期间碰到这么一个问题,页面低栏上的电话 ...

  5. 教你如何在Unity3D中快速制作自定义字体。

        自己的游戏有自己想要的字体,这个需求很常见.如何,以及如何快速的在unity中制作出自定义字体,这个技术你值得拥有,我值得共享.不喜欢废话,直入主题了. 什么叫自定义字体? 看到没,给你一些这 ...

  6. bmp制作自定义字体(cocostudio使用)

    工具需求:bmpfont 1.步骤 (1)制作 * 把自己的字体放到一个txt文件中,写个脚本抽离出来, 重复了没有关系 * Edit->Select chars from fils(注意:Ed ...

  7. unity 使用BMFont 制作自定义字体

    unity cocos 使用BMFont,生成自定义字体 1.BMFont下载地址 http://www.angelcode.com/products/bmfont/ 本篇讲解如何利用美工提供的字符图 ...

  8. Dockerfile制作自定义镜像

    本文介绍最精简的Dockerfile文件构建镜像,Docker启动的时候可以启动一个shell脚本 1.首先编写Dockerfile文件 说明 1.启动的这个shell脚本一定是不退出的,比如服务器的 ...

  9. Docker入门系列之二:使用dockerfile制作包含指定web应用的镜像

    2019独角兽企业重金招聘Python工程师标准>>> 在前一篇文章:Docker入门系列之一:在一个Docker容器里运行指定的web应用 里, 我们已经成功地将我们在本地开发的一 ...

最新文章

  1. Python 函数的可变参数(*paramter与**paramter)的使用
  2. 串口端口被占用的解决方法
  3. RAID重组和数据库数据的修复与验证
  4. python pandas dataframe 行列选择,切片操作 原创 2017年02月15日 21:43:18 标签: python 30760 python pandas dataframe
  5. 【转载】地球物理经典书目——成像方向
  6. ViewPager之使用PagerTabStrip添加标题栏,实现滑动效果
  7. 海报中应用广泛的书法(手写)字体素材
  8. C语言和设计模式(备忘录模式)
  9. Ubuntu中Zabbix安装客户端
  10. ++递归 字符串全排列_一文看懂全排列算法
  11. C#EXE 文件中 嵌入dll文件
  12. php在线文件编辑管理器 在线文本查看PHP插件
  13. com/lsass.exe smss.exe(磁碟机病毒) 感染方式之我分析 -- 2008第一博
  14. 硅芯片拆解:早期 555 定时器芯片内部一览
  15. 解决浏览器下载速度慢的问题
  16. NYOJ1016:德莱联盟(判线段相交)
  17. 汇编 bne 1b和bne 1f浅析
  18. 界面开发(3)--- PyQt5用户登录界面连接数据库
  19. 1.(地图资料篇)地图一些重要网站
  20. underscore随机数

热门文章

  1. java毕业设计晞晴贸易公司安保保洁管理平台mybatis+源码+调试部署+系统+数据库+lw
  2. Word快捷键:Ctrl+26个字母组合,简单易懂非常适合职场新人!
  3. 3D建模:角色手办的制作流程,分分钟一个手办!
  4. 这7个翻译神器超级猛!网页翻译、文档翻译,无所不能
  5. 国外优秀软件测试网站介绍及测试资料
  6. 【Let‘s make it big】英语学习合集1~10
  7. 鲲鹏HCIA学习笔记【一】鲲鹏体系介绍
  8. 推荐一本Python数据分析必备工具书
  9. iperf在macOS安装
  10. mq是消息服务器,MQ命令