gpt4 book ai didi

spring-boot - 如何将额外的 linux 依赖项添加到 spring-boot buildpack 镜像中?

转载 作者:行者123 更新时间:2023-12-02 18:13:08 32 4
gpt4 key购买 nike

我更新了我的 spring-boot 应用程序以使用 buildpacks 来创建我的 docker-image 而不是 dockerfile。我还在我的应用程序中使用了 Apache POI,并且由于该更新,我在生成 xlsx 文件时收到错误消息。经过一番挖掘,我认为这是因为 fontconfig和/或 ttf-dejavu包裹丢失。但是如何在 dockerimage 中添加这些?使用 dockerfile 我只想添加类似的东西

RUN apt-get update && apt-get install fontconfig ttf-dejavu
但是我如何使用 buildpacks 实现相同的目标?

最佳答案

这个答案假设“... spring-boot application to use buildpacks”是指使用 spring-boot:build-image maven 目标。
问题在于 maven 插件使用的默认构建器 (gcr.io/paketo-buildpacks/builder:base)。 Builder 负责配置 OS 镜像,“基本”构建器不包含 fontconfig 包。 .

启用 fontconfig 包的最简单方法是使用“完整”构建器( gcr.io/paketo-buildpacks/builder:full-cfgcr.io/paketo-buildpacks/builder:latest );例如,您可以通过以下方式之一执行此操作:

  • 通过在maven插件中指定builder配置参数,
    <project>
    <build>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.3.3.BUILD-SNAPSHOT</version>
    <configuration>
    <image>
    <builder>gcr.io/paketo-buildpacks/builder:latest</builder>
    </image>
    </configuration>
    </plugin>
    </plugins>
    </build>
    </project>
  • 或直接在 mvn 命令行上添加 -Dspring-boot.build-image.builder=gcr.io/paketo-buildpacks/builder:latest

  • 但是,这并不理想,因为完整的操作系统镜像要大得多(“完整”大约为 1.45GB,而“基本”大约为 644MB - 在 docker 镜像列表中观察到),“仅”启用 fontconfig 的开销相当大。

    更复杂的方法需要使用自定义 mixins 创建自定义构建器,以便使用额外的包创建定制的“基本”镜像。但我个人发现在这种情况下只使用 dockerfile 方法更容易。一些关于创建自定义构建器的文章:
  • https://buildpacks.io/docs/operator-guide/create-a-builder/
  • https://medium.com/@srinivasan.surprise/unpack-cloud-native-buildpacks-9959b601424b
  • 关于spring-boot - 如何将额外的 linux 依赖项添加到 spring-boot buildpack 镜像中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62484649/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com