如何使用 docker 秘密设置“spring.datasource.password”?

Jac*_*kie 6 spring spring-data-jpa docker spring-boot docker-secrets

目前,我在 datasource.properties 文件中有以下内容用于本地连接到数据源...

//datasource.properties
spring.datasource.password=${DB_PASSWORD}
Run Code Online (Sandbox Code Playgroud)

这对于本地来说非常有用,但现在我正在尝试创建一个 docker 映像。为了存储数据,我宁愿使用秘密而不是环境变量(或者甚至可能是秘密然后是未找到的环境变量)。我当前在本地 docker 映像中设置了秘密,但我无法弄清楚如何使用代码而不是属性来设置 spring.datasource.password 。

如何使用 docker 秘密设置“spring.datasource.password”?

小智 2

借助EnvironmentPostProcessor接口的自定义实现,“spring.datasource.password”可以在application.yml中设置如下

   spring:
     datasource:
       password: ${docker-secret-my-db-passwd}
Run Code Online (Sandbox Code Playgroud)

容器内绑定的 docker 机密以文件形式显示在 /run/secrets 文件夹下。EnvironmentPostProcessor 实现加载这些文件作为环境属性。

Spring boot参考文献-加密属性中也介绍了这个想法