1

我对通过 docker-compose 文件传递​​的环境变量有疑问。

我有链码,它在启用安全性时进行安全检查。它检查是否通过 core.SecurityEnabled() api 启用了安全性。我使用 docker-compose env 启用/禁用安全性。变量 CORE_SECURITY_ENABLED。

这在开发模式下工作正常。但是,当我在非开发模式下部署链代码时,我得到 core.SecurityEnabled() 为 false,尽管我的 env 变量被传递为 true。我检查了码头集装箱。运行 peer 的 Docker 容器,在 env 命令上返回 env 变量 CORE_SECURITY_ENABLED=true。但是,运行链码的 docker 容器没有环境变量 CORE_SECURITY_ENABLED。它将从设置为 false 的 core.yaml 中获取值。

这是按照设计吗?在生产模式下,我们是否应该在 core.yaml 文件中进行更改,而不是依赖通过 docker-compose 传递的环境变量?

4

1 回答 1

0

我正在使用下面给出的 docker-compose 来获取CORE_SECURITY_ENABLED=true/false。您是否尝试过以这种方式指定环境变量?

    membersrvc:
      image: hyperledger/fabric-membersrvc
      ports:
        - "7054:7054"
      command: membersrvc
    vp0:
      image: hyperledger/fabric-peer
      ports:
        - "8085:7050"
        - "8080:7053"
        - "30303:30303"
        - "30304:30304"
      environment:
        - CORE_PEER_ADDRESSAUTODETECT=true
        - CORE_SECURITY_ENABLED=true
        - CORE_SECURITY_PRIVACY=true
        - CORE_VM_ENDPOINT=http://172.17.0.1:2375
        - CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
        - CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
        - CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
        - CORE_LOGGING_LEVEL=DEBUG
        - CORE_PEER_ID=vp0
        - CORE_SECURITY_ENROLLID=test_vp0
        - CORE_SECURITY_ENROLLSECRET=MwYpmSRjupbT
      links:
        - membersrvc
      command: sh -c "sleep 35; peer node start  --logging-level=DEBUG"

如果您的问题从 FAB jira 得到解答,请忽略此帖子。

于 2016-12-19T11:04:36.647 回答