Hyperledger Fabric 1.0 在添加 CouchDB 持久性时出错
Hyperledger Fabric 1.0 get error when adding CouchDB persistence
我可以 运行 Hyperledger Fabric 1.0 "first network" 样本。
现在,我正尝试按照 https://hyperledger-fabric.readthedocs.io/en/latest/build_network.html#using-couchdb and https://hyperledger-fabric.readthedocs.io/en/latest/build_network.html#a-note-on-data-persistence
中所述向该示例添加 CouchDB 持久性
我在 fabric-samples/first-network/byfn.sh 中编辑 networkUp() 函数,将行从:
CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE up -d 2>&1
至:
CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f docker-compose-cli.yaml -f docker-compose-couch.yaml up -d 2>&1
我也编辑文件 fabric-samples/first-network/docker-compose-couch.yaml 更改块:
services:
couchdb0:
container_name: couchdb0
image: hyperledger/fabric-couchdb
ports:
- "5984:5984"
networks:
- byfn
至:
services:
couchdb0:
container_name: couchdb0
image: hyperledger/fabric-couchdb
ports:
- "5984:5984"
networks:
- byfn
volumes:
- /var/hyperledger/couchdb0:/opt/couchdb/data
当我用命令运行它时:
yes | sudo ./byfn.sh -m generate
yes | sudo ./byfn.sh -m up
在它列出 'Channel "mychannel" is created successfully' 之后,我收到错误:
UTC [grpc] Printf -> DEBU 003 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: Error while dialing dial tcp 172.18.0.8:7051: getsockopt: connection refused"; Reconnecting to {peer0.org1.example.com:7051 <nil>}
非常感谢任何帮助。
提前致谢!
这个问题在 RHEL 7.3 上没有发生,所以我按照 http://www.itzgeek.com/how-tos/linux/centos-how-tos/how-to-update-centos-7-07-17-2-to-centos-7-3.html 中的描述将我的 CentOS 从 7.2 更新到 7.3,我的问题得到了解决。
所做的更改:
1) 已创建文件夹
mkdir /home/vagrant/db0
2) 在 byfn.sh 的 networkUp() 中更改:
# CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE up -d 2>&1
CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f docker-compose-cli.yaml -f docker-compose-couch.yaml up -d 2>&1
3) 在 docker-compose-couchdb.yaml 中添加了最后两行 "volumes:":
services:
couchdb0:
container_name: couchdb0
image: hyperledger/fabric-couchdb
ports:
- "5984:5984"
networks:
- byfn
volumes:
- /home/vagrant/db0:/opt/couchdb/data
docker 容器以用户 couchdb 启动。因此,当您尝试共享数据目录的卷时,docker 容器会尝试创建此文件夹并将所有权分配给 root。所以我认为 user 变量应该在 docker 文件中留空,而不是将其指定为 couchdb。我的环境是RHEL release 7.3 (Maipo)。为了解决这个问题,我使用以下命令启动了容器并将用户指定为 root
docker run --rm -itd --name couchdb0 --user root \
--publish 5984:5984 \
--volume /var/hyperledger/couchdb0:/opt/couchdb/data \
hyperledger/fabric-couchdb:x86_64-1.0.0
我可以 运行 Hyperledger Fabric 1.0 "first network" 样本。
现在,我正尝试按照 https://hyperledger-fabric.readthedocs.io/en/latest/build_network.html#using-couchdb and https://hyperledger-fabric.readthedocs.io/en/latest/build_network.html#a-note-on-data-persistence
中所述向该示例添加 CouchDB 持久性我在 fabric-samples/first-network/byfn.sh 中编辑 networkUp() 函数,将行从:
CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE up -d 2>&1
至:
CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f docker-compose-cli.yaml -f docker-compose-couch.yaml up -d 2>&1
我也编辑文件 fabric-samples/first-network/docker-compose-couch.yaml 更改块:
services:
couchdb0:
container_name: couchdb0
image: hyperledger/fabric-couchdb
ports:
- "5984:5984"
networks:
- byfn
至:
services:
couchdb0:
container_name: couchdb0
image: hyperledger/fabric-couchdb
ports:
- "5984:5984"
networks:
- byfn
volumes:
- /var/hyperledger/couchdb0:/opt/couchdb/data
当我用命令运行它时:
yes | sudo ./byfn.sh -m generate
yes | sudo ./byfn.sh -m up
在它列出 'Channel "mychannel" is created successfully' 之后,我收到错误:
UTC [grpc] Printf -> DEBU 003 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: Error while dialing dial tcp 172.18.0.8:7051: getsockopt: connection refused"; Reconnecting to {peer0.org1.example.com:7051 <nil>}
非常感谢任何帮助。
提前致谢!
这个问题在 RHEL 7.3 上没有发生,所以我按照 http://www.itzgeek.com/how-tos/linux/centos-how-tos/how-to-update-centos-7-07-17-2-to-centos-7-3.html 中的描述将我的 CentOS 从 7.2 更新到 7.3,我的问题得到了解决。
所做的更改:
1) 已创建文件夹
mkdir /home/vagrant/db0
2) 在 byfn.sh 的 networkUp() 中更改:
# CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE up -d 2>&1
CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f docker-compose-cli.yaml -f docker-compose-couch.yaml up -d 2>&1
3) 在 docker-compose-couchdb.yaml 中添加了最后两行 "volumes:":
services:
couchdb0:
container_name: couchdb0
image: hyperledger/fabric-couchdb
ports:
- "5984:5984"
networks:
- byfn
volumes:
- /home/vagrant/db0:/opt/couchdb/data
docker 容器以用户 couchdb 启动。因此,当您尝试共享数据目录的卷时,docker 容器会尝试创建此文件夹并将所有权分配给 root。所以我认为 user 变量应该在 docker 文件中留空,而不是将其指定为 couchdb。我的环境是RHEL release 7.3 (Maipo)。为了解决这个问题,我使用以下命令启动了容器并将用户指定为 root
docker run --rm -itd --name couchdb0 --user root \
--publish 5984:5984 \
--volume /var/hyperledger/couchdb0:/opt/couchdb/data \
hyperledger/fabric-couchdb:x86_64-1.0.0