【问题标题】:Hyperledger Fabric 1.0 get error when adding CouchDB persistenceHyperledger Fabric 1.0 在添加 CouchDB 持久性时出错
【发布时间】:2017-12-17 08:57:59
【问题描述】:

我可以很好地运行 Hyperledger Fabric 1.0“第一网络”示例。

现在我正在尝试将 CouchDB 持久性添加到此示例中,如 https://hyperledger-fabric.readthedocs.io/en/latest/build_network.html#using-couchdbhttps://hyperledger-fabric.readthedocs.io/en/latest/build_network.html#a-note-on-data-persistence 中所述

我在 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

在它列出'频道“mychannel”已成功创建'之后,我收到错误:

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>}

非常感谢任何帮助。

提前致谢!

【问题讨论】:

  • 在上面的错误行之后,我得到: Error getting endorser client channel: PER:404 - Error trying to connect to local peer

标签: couchdb hyperledger-fabric


【解决方案1】:

这个问题在 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

【讨论】:

  • 伙计,我遇到了类似的问题,使用 leveldb 一切正常,但是当我更改为 couchdb 时,我的事件侦听器功能因连接失败而崩溃,你能帮我清楚地了解你是如何解决这个问题的吗?我在 AWS ubuntu 中运行结构网络
  • 您好,澄清一下:就我而言,去年它与 Linux 内核更新有关。祝你好运。
【解决方案2】:

docker 容器以用户 couchdb 启动。因此,当您尝试共享数据目录的卷时,docker 容器会尝试创建此文件夹并将所有权分配给 root。所以我认为用户变量应该在 dockerfile 中留空,而不是指定为 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

【讨论】:

    猜你喜欢
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 2020-09-02
    • 2020-07-01
    • 2014-03-24
    相关资源
    最近更新 更多