尝试将对等体加入结构中的通道时出错

问题描述 投票:1回答:5

我正在尝试构建一个具有两个通道的结构网络。一个对等体能够加入该通道,但在尝试加入第二个对等体时,会出现以下错误:

错误:找不到创世块文件打开mychannel.block:没有这样的文件或目录

这是我用于创建频道和加入对等的代码:

创建频道:

docker exec -e "CORE_PEER_LOCALMSPID=Org2MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/[email protected]/msp" peer0.org2.example.com peer channel create -o orderer.example.com:7050 -c mychannel -f /etc/hyperledger/configtx/channel.tx

加入同行:

docker exec -e "CORE_PEER_LOCALMSPID=Org2MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/[email protected]/msp" peer0.org2.example.com peer channel join -b mychannel.block

docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/[email protected]/msp" peer0.org1.example.com peer channel join -b mychannel.block

如果出现问题,请更正。

hyperledger-fabric
5个回答
2
投票

我在相同的情况下运行并找到解决方案。由于mychannel.block仅为peer0.org2.example.com容器所知,因此必须从那里完成所有连接。对于第二个同伴,您可以发出:

docker exec -e“CORE_PEER_LOCALMSPID = Org1MSP”-e“CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/[email protected]/msp”-e“peer0.org1.example.com:7051”peer0.org2。 example.com对等通道加入-b mychannel.block

中号


1
投票

问题是mychannel.block仅在peer0.org2.example.com容器中可用(因为那是您运行channel create命令的容器)。 peer0.org1.example.com容器无权访问mychannel.block,这就是您收到错误的原因。

您需要做的是实际上要做的是为两个容器安装共享卷,并确保在运行通道时创建mychannel.block在共享卷中输出


0
投票

你需要检查你的docker-compose.yaml文件,看看你是如何在那里映射卷的

在两个对等体的定义中,确保有一个共同的映射卷,例如在peer0中你可能有这样的东西;

    volumes:
    - /var/run/:/host/var/run/
    - ./:/etc/hyperledger/configtx
    - ./crypto-config/peers/peer0/msp:/etc/hyperledger/peer/msp
    - ./crypto-config/users/user0/msp:/etc/hyperledger/msp/users

在你的同伴中你可能有;

    volumes:
    - /var/run/:/host/var/run/
    - ./:/etc/hyperledger/configtx
    - ./crypto-config/peers/peer1/msp:/etc/hyperledger/peer/msp
    - ./crypto-config/users/user1/msp:/etc/hyperledger/msp/users

您可以在这里看到有两个共享的卷映射,每个定义中的前两个指向示例位置。

所以要明确,卷映射定义如下:

[path on local machine]:[path to map in docker image]

0
投票

我有同样的问题,但情况略有不同:我在一个组织(peer0)有两个同伴(peer1org1)。我使用以下命令将它们连接到同一个通道,它可以工作:

//Join peer0.org1.example.com to the channel

docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e 
"CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/[email protected]/msp" 
peer0.org1.example.com peer channel join -b mychannel.block

//Join peer1.org1.example.com to the channel.

docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e 
"CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/[email protected]/msp" -e "CORE_PEER_ADDRESS=peer1.org1.example.com:7051" peer0.org1.example.com peer 
channel join -b mychannel.block

0
投票

此问题是由于在peer0.org1.example.com中找不到mychannel.block您可以将mychannel.block从peer0.org2.example.com复制到peer0.org1.example.com

尝试这些命令

docker cp peer0.org2.example.com:/opt/gopath/src/github.com/hyperledger/fabric/mychannel.block mychannel.block


docker cp mychannel.block peer0.org1.example.com:/opt/gopath/src/github.com/hyperledger/fabric/

sudo rm mychannel.block

现在尝试将peer0.org1.example.com重新加入mychannel。

© www.soinside.com 2019 - 2024. All rights reserved.