【问题标题】:Spring boot bootBuildImage include secret fileSpring boot bootBuildImage 包含秘密文件
【发布时间】:2021-12-14 20:11:00
【问题描述】:

我正在使用 Kotlin + Firestore 构建一个 Spring Boot 应用程序。我正在使用bootBuildImage 命令构建可用于在 Cloud Run 中部署的 Docker 映像。为了安全起见,我在application.properties 文件中定义了firebase 密钥文件。

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

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

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

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

【问题讨论】:

    标签: spring-boot google-cloud-firestore buildpack


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-09-11
      • 2018-12-26
      • 2019-05-23
      • 2020-11-13
      • 2022-10-19
      • 2018-07-04
      • 2021-01-19
      • 2018-03-05
      • 1970-01-01
      相关资源
      最近更新 更多