如何使用 spring-boot:build-image 嵌入 CA 证书?

How to embed CA-certificates with spring-boot:build-image?

我需要使用 spring-boot:build-imagepaketo-buildpacks/ca-certificates 将自签名证书添加到 spring-boot docker 映像,但无法正常工作。

所以:

到目前为止我尝试过但没有成功: 更新 pom.xml spring-boot-maven-plugin:

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <image>
                <bindings>
                    <binding>${basedir}/bindings/ca-certificates:/platform/bindings/ca-certificates</binding>
                </bindings>
            </image>
        </configuration>
        <executions>
            <execution>
                <goals>
                    <goal>build-image</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

来自 ${basedir} 文件夹:

mkdir bindings
mkdir bindings/ca-certificates
echo "ca-certificates" > bindings/ca-certificates/type
cp ~/.ssh/mycert.pem bindings/ca-certificates/
mvn spring-boot:build-image

编辑:按照@nick-valanos 的建议将图像绑定配置直接移动到引导插件下(而不是在特定执行中)并解决了问题。

我明白了。上面的 Maven 配置是针对 Maven package 目标的,而不是 spring-boot:build-image.

完整的程序如下:

  • 在 Maven 项目根目录创建 bindings/ca-certificates 文件夹并添加:
    • type 文件仅包含 ca-certificates
    • 您想嵌入的 CA 证书(PEM 格式)
  • 在 pom.xml 中,将 build-image 执行添加到 spring-boot-maven-plugin,并按照我的问题
  • 配置的 ${basedir}/bindings/ca-certificates:/platform/bindings/ca-certificates 图像绑定
  • 运行 mvn clean package

我也遇到了同样的问题,我发现您的 post 很有帮助。经过一番尝试,我发现您的配置也可以与 spring-boot:build-image 一起使用,只需进行以下更改:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <image>
            <bindings>
                <binding>${basedir}/bindings/ca-certificates:/platform/bindings/ca-certificates</binding>
            </bindings>
        </image>
    </configuration>
</plugin>

如您所见,我在 <plugin> 之后添加了 <configuration>。这样,它似乎可以通过 spring-boot:build-image

进行解析