我对通过docker-compose文件传递的环境变量有疑问。
我有链代码,在启用安全性时会执行安全检查。它检查是否通过core.SecurityEnabled()api启用了安全性。我使用docker-compose env启用/禁用安全性。变量CORE_SECURITY_ENABLED。
这在开发模式下工作正常。但是,当我在非开发模式下部署链代码时,我将core.SecurityEnabled()视为false,尽管我的env变量传递为true。我检查了码头工人的容器。 Docker容器运行peer,在env命令上返回env变量CORE_SECURITY_ENABLED = true。但是,运行chaincode的docker容器没有env变量CORE_SECURITY_ENABLED。它将从core.yaml中获取值,该值设置为false。
这是按照设计吗?在生产模式中我们应该在core.yaml文件中进行更改而不是依赖于通过docker-compose传递的env变量吗?
答案 0 :(得分: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回答了您的查询,请忽略此帖。