spring-boot - Spring boot插件docker OCI镜像和JasperReports

标签 spring-boot docker jasper-reports

我们正在尝试切换 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/

相关文章:

java - 如何在 Spring 框架中从原始类型创建 JSON 对象?

docker - 在链接的 docker 容器中执行命令

php - Azure App Service 中的 Wordpress 无法通过符号链接(symbolic link)读取文件

MySQL 帮助连接表以制作 jasper ireport

javascript - 有人有将 Visualize.js 嵌入 APEX 应用程序以集成 JasperServer Reports 的经验吗?

java - 从 Java 应用程序执行报表时如何指定子数据集查询

java - 在嵌套的 java Spring 配置属性类中,可以使用父级的值来初始化子级吗?

Spring Boot 测试未使用测试属性

java - 如何通过 Springboot 服务的 2 个实例从共享位置并行访问文件?

user-interface - Docker 容器的 ssh X11 转发的替代方案