1. 修改 Dockerfile 文件,将字体文件拷贝至镜像里
FROM openjdk8-openj9:ubuntu
COPY simsun.ttc /usr/share/fonts/
2. 修改 pom.xml 文件,使字体文件可导入Maven构建资源中
<build>
<resources>
<!-- 输出Dockerfile至docker文件夹 -->
<resource>
<directory>src/main/docker</directory>
<filtering>true</filtering>
<includes>
<include>**/Dockerfile</include>
<!-- 字体文件 -->
<include>simsun.ttc</include>
</includes>
<targetPath>../docker</targetPath>
</resource>
</resources>
</build>
基于此,字体文件已配置完毕,可以开始构建
【问题1】若镜像构建过程中出现该报错日志:
[ERROR] Failed to execute goal maven-resources-plugin:3.2.0:resources Input length = 1
则可能是 maven 插件的版本是3.2.0,此版本有个 issue ,会导致无法传递非UTF8编码格式文件,修改 pom.xml 的里的相关插件版本即可,亲测 3.1.0 可用
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<!-- 避免文件传送非UTF8编码导致异常 -->
<version>3.1.0</version>
</plugin>
【问题2】进入容器内:执行 fc-list 无导入字体,则可能是文件损坏导致容器无法加载字体,添加 pom.xml 相关配置,防止被压缩破坏
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<!-- 避免文件传送非UTF8编码导致异常 -->
<version>3.1.0</version>
<!-- 避免font文件的二进制文件格式压缩破坏 -->
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>woff</nonFilteredFileExtension>
<nonFilteredFileExtension>woff2</nonFilteredFileExtension>
<nonFilteredFileExtension>eot</nonFilteredFileExtension>
<nonFilteredFileExtension>ttf</nonFilteredFileExtension>
<nonFilteredFileExtension>svg</nonFilteredFileExtension>
<nonFilteredFileExtension>ttc</nonFilteredFileExtension>
<nonFilteredFileExtension>TTC</nonFilteredFileExtension>
<nonFilteredFileExtension>jar</nonFilteredFileExtension>
<nonFilteredFileExtension>conf</nonFilteredFileExtension>
</nonFilteredFileExtensions>
<delimiters>
<delimiter>@</delimiter>
</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>
【验证】进入容器执行 fc-list 命令,结果如图:
至此, 构建含有中文字体的docker镜像完成