基于Maven构建含中文字体的Docker镜像

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镜像完成

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值