0

我想 dockerize 我的 spring 云配置服务器应用程序。我正在创建一个 docker secretgit-repo-pass来存储 github 帐户密码。我正在SPRING_CLOUD_CONFIG_SERVER_GIT_PASSWORD使用 docker 机密的默认路径设置环境,即/run/secrets/git-repo-pass. 但是,当我运行 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 secrets 加载应用程序属性,请告诉我。谢谢你 !!

4

1 回答 1

0

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

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

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

于 2020-11-12T20:55:38.620 回答