dockerfile制作自定义字体的java环境镜像
目录
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环境镜像相关推荐
- unity 字体width_Unity中制作自定义字体
使用Unity中的Sprite.Unity支持把一个Sprite切割成多个. 需要手动做的工作是将图集的TextureType设置为Sprite,然后把SpriteMode设为Multiple,打开S ...
- Docker制作含字体库的OpenJdk镜像
最近项目上测试环境,测试测一个导出模板的功能时,发现模板导出出来,于是我在本地试了一下,结果正常导出,同一份代码部署到测试怎么就不一样了呢,无奈只能查看服务器日志,发下如下错误: java.lang. ...
- fontforge制作自定义字体及在手机上应用举例——张鑫旭
一.看似无关紧要的事件背景 之所以花时间折腾fontforge这个软件,去制作什么自定义的字体是有原因滴. 之前提过,最近我抽空将公司的手机软件HTML5网页化.期间碰到这么一个问题,页面低栏上的电话 ...
- fontforge制作自定义字体及在手机上应用举例
一.看似无关紧要的事件背景 之所以花时间折腾fontforge这个软件,去制作什么自定义的字体是有原因滴. 之前提过,最近我抽空将公司的手机软件HTML5网页化.期间碰到这么一个问题,页面低栏上的电话 ...
- 教你如何在Unity3D中快速制作自定义字体。
自己的游戏有自己想要的字体,这个需求很常见.如何,以及如何快速的在unity中制作出自定义字体,这个技术你值得拥有,我值得共享.不喜欢废话,直入主题了. 什么叫自定义字体? 看到没,给你一些这 ...
- bmp制作自定义字体(cocostudio使用)
工具需求:bmpfont 1.步骤 (1)制作 * 把自己的字体放到一个txt文件中,写个脚本抽离出来, 重复了没有关系 * Edit->Select chars from fils(注意:Ed ...
- unity 使用BMFont 制作自定义字体
unity cocos 使用BMFont,生成自定义字体 1.BMFont下载地址 http://www.angelcode.com/products/bmfont/ 本篇讲解如何利用美工提供的字符图 ...
- Dockerfile制作自定义镜像
本文介绍最精简的Dockerfile文件构建镜像,Docker启动的时候可以启动一个shell脚本 1.首先编写Dockerfile文件 说明 1.启动的这个shell脚本一定是不退出的,比如服务器的 ...
- Docker入门系列之二:使用dockerfile制作包含指定web应用的镜像
2019独角兽企业重金招聘Python工程师标准>>> 在前一篇文章:Docker入门系列之一:在一个Docker容器里运行指定的web应用 里, 我们已经成功地将我们在本地开发的一 ...
最新文章
- Python 函数的可变参数(*paramter与**paramter)的使用
- 串口端口被占用的解决方法
- RAID重组和数据库数据的修复与验证
- python pandas dataframe 行列选择,切片操作 原创 2017年02月15日 21:43:18 标签: python 30760 python pandas dataframe
- 【转载】地球物理经典书目——成像方向
- ViewPager之使用PagerTabStrip添加标题栏,实现滑动效果
- 海报中应用广泛的书法(手写)字体素材
- C语言和设计模式(备忘录模式)
- Ubuntu中Zabbix安装客户端
- ++递归 字符串全排列_一文看懂全排列算法
- C#EXE 文件中 嵌入dll文件
- php在线文件编辑管理器 在线文本查看PHP插件
- com/lsass.exe smss.exe(磁碟机病毒) 感染方式之我分析 -- 2008第一博
- 硅芯片拆解:早期 555 定时器芯片内部一览
- 解决浏览器下载速度慢的问题
- NYOJ1016:德莱联盟(判线段相交)
- 汇编 bne 1b和bne 1f浅析
- 界面开发(3)--- PyQt5用户登录界面连接数据库
- 1.(地图资料篇)地图一些重要网站
- underscore随机数
热门文章
- java毕业设计晞晴贸易公司安保保洁管理平台mybatis+源码+调试部署+系统+数据库+lw
- Word快捷键:Ctrl+26个字母组合,简单易懂非常适合职场新人!
- 3D建模:角色手办的制作流程,分分钟一个手办!
- 这7个翻译神器超级猛!网页翻译、文档翻译,无所不能
- 国外优秀软件测试网站介绍及测试资料
- 【Let‘s make it big】英语学习合集1~10
- 鲲鹏HCIA学习笔记【一】鲲鹏体系介绍
- 推荐一本Python数据分析必备工具书
- iperf在macOS安装
- mq是消息服务器,MQ命令