Spring boot bootBuildImage 包含秘密文件

Spring boot bootBuildImage include secret file

我正在使用 Kotlin + Firestore 构建一个 spring 启动应用程序。我正在使用 bootBuildImage 命令构建 Docker 图像,我可以使用它在云 运行 中进行部署。为了安全起见,我在 application.properties 文件中定义了 firebase 密钥文件。

firebase.credential.path = secret/firebase-key.json

图像生成后,当我通过docker 运行 运行 应用程序时,应用程序无法启动,因为它无法找到“secret/firebase-key .json”文件。

我查看了有关如何将本地文件复制到图像的文档,但未找到相关结果。

是否可以使用 bootBuildImage 命令在映像中包含这样的 属性 文件?我试图避免编写 Docker 文件并使用 bootBuildImage。蒂亚

您不想将敏感信息放入您的容器镜像中。这会将您的敏感信息暴露给有权访问容器映像的任何人。它还会降低容器映像的灵活性,因为您将其修复为仅用于该特定配置。

敏感信息的推荐方法是将其映射到容器中。

如果你正在使用 Kubernetes,你会使用 a secret and likely map that secret into the pod as a file。您也可以将其映射为环境变量,Spring Boot 使使用环境变量变得容易,但是由于您在 firebase.credential.path 属性 中引用了一个文件,因此映射秘密是最简单的进入该位置的吊舱。

如果您 运行 您的容器带有 Docker,您可以使用体积图做类似的事情(环境变量也是可能的,但同样,对于您的情况,体积图可能更有意义)。这允许您将外部文件映射到容器中的任意位置,即 firebase.credential.path.