如何使用docker secret设置属性spring.cloud.config.server.git.password



我想将我的spring云配置服务器应用程序固定化。我正在创建一个docker机密git-repo-pass来存储github帐户密码。我正在使用docker机密的默认路径/run/secrets/git-repo-pass设置环境SPRING_CLOUD_CONFIG_SERVER_GIT_PASSWORD。但是,当我运行compose并检查容器时,我看到环境实际上设置为路径,而不是该路径的内容。

在下面分享我的docker-compose.yml文件,

version: '3.8'
services:
config-standalone:
container_name: config-standalone
image: ss-config:1.0
ports:
- "8888:8888"
secrets:
- git-repo-pass
environment:
- SPRING-CLOUD-CONFIG-SERVER-GIT-PASSWORD=/run/secrets/git-repo-pass
secrets:
git-repo-pass:
external: true

引发异常:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: Cannot load environment] with root cause

请告诉我是否有一种方法可以使用docker机密加载应用程序属性。非常感谢。

基本上,机密只是文件,安全存储并在容器启动时挂载。它本身不会成为一个环境变量,所以你必须做到这一点。

使事情运行的最快方法是将启动命令修改为类似export SPRING-CLOUD-CONFIG-SERVER-GIT-PASSWORD=$(cat /run/secrets/git-repo-pass) && <actual_command>的命令,它将把文件读取到环境变量中,然后执行它想做的任何事情。您可以在服务名称下使用command选项在compose文件中使其正确。

解决此问题的正确方法是创建第二个变量并更改应用程序以读取位于变量中存储的路径的文件。对于Docker镜像维护人员来说,这是一种常见的做法,即在末尾为机密提供第二个变量FILE,比如SPRING-CLOUD-CONFIG-SERVER-GIT-PASSWORD-FILE

最新更新