Hyperledger Fabric多Peer调用问题:如何切换至peer0.org2.example.com执行命令
如何在Hyperledger Fabric CLI容器中切换到peer0.org2.example.com执行命令
我明白你遇到的问题了——默认进入CLI容器后,环境变量都是指向org1的peer0,手动修改后没生效?这是因为每次通过docker exec -it cli bash进入容器时,会启动一个全新的bash会话,容器内置的默认环境变量会重新加载,而且如果修改时没正确用export,变量也不会在当前会话生效。下面给你几个可行的解决方法:
方法一:进入容器后临时设置环境变量(当前会话有效)
进入CLI容器后,你需要用export命令覆盖四个核心环境变量,确保当前bash会话使用org2的配置:
# 切换到org2的Admin身份和peer0节点 export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp export CORE_PEER_ADDRESS=peer0.org2.example.com:9051 export CORE_PEER_LOCALMSPID="Org2MSP" export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
设置完成后,执行echo $CORE_PEER_LOCALMSPID验证,应该会输出Org2MSP,之后你就可以正常执行针对peer0.org2的链码调用、查询等命令了。
注意:这个设置只在当前bash会话有效,退出容器再重新进入后需要重新设置。
方法二:直接在docker exec时指定环境变量(单次命令有效)
如果你不想进入容器,想直接执行单次命令,可以在docker exec时通过-e参数直接传递环境变量:
docker exec -e CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp \ -e CORE_PEER_ADDRESS=peer0.org2.example.com:9051 \ -e CORE_PEER_LOCALMSPID="Org2MSP" \ -e CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt \ cli peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
这条命令会直接让CLI容器以org2 peer0的身份执行链码查询操作,无需进入容器交互。
方法三:利用first-network内置的脚本(最便捷)
first-network的CLI容器中通常自带了辅助脚本,可以快速切换组织和peer节点。进入容器后,执行:
# 加载脚本 source scripts/script.sh # 切换到org2的peer0(参数格式:setGlobals <peer编号> <组织编号>) setGlobals 0 2
这个脚本会自动帮你设置好对应的环境变量,省去手动输入的麻烦,非常适合频繁切换节点的场景。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

