我想对我的 Spring Cloud 配置服务器应用程序进行 docker 化。我正在创建一个 docker 秘密git-repo-pass
保存github账号密码。我正在设置环境SPRING_CLOUD_CONFIG_SERVER_GIT_PASSWORD
docker 秘密的默认路径是/run/secrets/git-repo-pass
。但是,当我运行组合并检查容器时,我发现环境实际上设置为路径,而不是该路径的内容。
下面分享我的 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 密钥加载应用程序属性。
谢谢 !!
基本上,秘密只是文件,安全存储并在容器启动时安装。它本身不会成为环境变量,因此您必须实现这一点。
The fastest让事情运行的方法是将启动命令修改为类似的内容export SPRING-CLOUD-CONFIG-SERVER-GIT-PASSWORD=$(cat /run/secrets/git-repo-pass) && <actual_command>
,它将把文件读入环境变量,然后执行它想要执行的操作。您可以在撰写文件中使用command
服务名称下的选项。
The right解决这个问题的方法是创建第二个变量并更改应用程序以读取位于变量中存储的路径的文件。这类似于 Docker 镜像维护者的常见做法,即为机密提供第二个变量FILE
最后,就像SPRING-CLOUD-CONFIG-SERVER-GIT-PASSWORD-FILE
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)