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

Spring boot 如何使用docker secret设置属性spring.cloud.config.server.git.password,spring-boot,docker,docker-compose,docker-secrets,spring-cloud-config-server,Spring Boot,Docker,Docker Compose,Docker Secrets,Spring Cloud Config Server,我想将我的SpringCloudConfig服务器应用程序dockerize。我正在创建docker secretgit repo pass来存储github帐户密码。我正在使用docker secrets的默认路径/run/secrets/GIT repo pass设置环境SPRING\u CLOUD\u CONFIG\u SERVER\u GIT\u PASSWORD。但是,当我运行compose并检查容器时,我看到环境实际上被设置为路径,而不是该路径的内容 在下面共享我的docker-co

我想将我的SpringCloudConfig服务器应用程序dockerize。我正在创建docker secret
git repo pass
来存储github帐户密码。我正在使用docker secrets的默认路径
/run/secrets/GIT repo pass
设置环境
SPRING\u CLOUD\u CONFIG\u SERVER\u GIT\u 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[dispatcherServlet]的Servlet.service()引发了异常[请求处理失败;嵌套异常为java.lang.IllegalStateException:无法加载环境],根本原因为

请让我知道是否有办法使用docker secrets加载应用程序属性。
谢谢

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

让事情运行起来的最快的方法是将启动命令修改为
export-SPRING-CLOUD-CONFIG-SERVER-GIT-PASSWORD=$(cat/run/secrets/GIT-repo-pass)&&
,这将把文件读入环境变量,然后执行它想执行的任何操作。您可以使用服务名称下的
命令
选项在撰写文件中正确设置它

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