我们正在尝试切换 Docker 容器的构建方式,以便从 spring boot gradle 插件生成的 OCI 镜像中受益。
到目前为止,我们使用经典方法:我们有自己的 Dockerfile,所有自定义都在其中完成 - 包括安装必要的软件包。
使用 gradle 插件,如下所述:https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/#build-image工作得很好,几乎所有东西都能正常工作。
但是我们依赖JasperReports,当我们尝试生成PDF时,会抛出以下错误:java.lang.NullPointerException:无法从短数组加载,因为“sun.awt.FontConfiguration.head”为null
.这就是我们在自定义 Dockerfile 中包含字体包的原因。
我找不到要包含的构建包以获得字体支持。
如何实现这一目标?
最佳答案
经过更多研究,似乎唯一的解决方案是实现我们自己的 OCI 运行镜像:
FROM paketobuildpacks/run:base-cnb
USER root
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
libfreetype6 \
fontconfig \
&& rm -rf /var/lib/apt/lists/*
USER cnb
然后必须配置 gradle/maven 插件才能使用它。 请参阅 Spring 的文档:https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/#build-image.examples.custom-image-builder
关于spring-boot - Spring boot插件docker OCI镜像和JasperReports,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67179227/