家蛙树

Hyperledger fabric-couchdb镜像版本的坑

Zealot
区块链
2018-11-21

Hyperledger Ledger从1.2升到1.3之后,同事反馈同样的脚本,创建通道或加入通道,部分人没问题,部分人一直有问题。 有问题的同事发现是peer对应的couchdb没起来,把持久化配置的映射卷取消才行, 否则一直提示./data/_users.couch没有权限。

笔者最终在一台fabric 1.2的机器重现该问题。 stackoverflow有少量这样的问题,不过没有很好解决方案。

docker images查询了下hyperledger/fabric-couchdb版本都是latest.
具体使用docker inspect hyperledger/fabric-couchdb 才查询到实际版本为
“.base.version”: “amd64-0.4.14”,

这个是当前最新的版本,查看fabric安装脚本boostrap.sh

# if version not passed in, default to latest released version
export VERSION=1.3.0
# if ca version not passed in, default to latest released version
export CA_VERSION=$VERSION
# current version of thirdparty images (couchdb, kafka and zookeeper) released
export THIRDPARTY_IMAGE_VERSION=0.4.13

对应的版本应该是0.4.13, fabric1.2使用的couchdb对应是0.4.10. 而我们平常写的docker-compose.yaml都是没带镜像的版本的。 笔者猜测是镜像版本不配套, 强制指定版本。

couchdb:
    container_name: couchdb
    image: hyperledger/fabric-couchdb:0.4.10

使用docker-compose -f docker-compose.yml up couchdb多次测试, 出现的问题得到解决。

实际上hyperledger fabric-couchdb 0.4.14镜像使用的couchdb版本为2.2.0比较新了。
而hyperledger fabric-coudb 0.4.13镜像使用的couchdb为2.1.1。应该是版本变化有些大。

所以docker compose脚本编写的一个最佳实践是, 镜像务必带上版本号, 版本号参考fabric安装脚本bootstrap.sh为准, 不随便升级。

如果不指定版本号, 可能默认就是latest版本, 如果不小心对本机的镜像进行了清理,下次使用镜像的时候可能就自动pull latest版本。

最近更新较慢,但是忙完这阵子会给大家一些干货。 有问题也可到公众号留言。

Chin Up

t_b7a47ae5de734e57b1a702733459e294.png

点赞 0
0条评论
其他心得
1. 问题场景 Fabric peer节点使用文件保存区块, 使用level db或couchdb数据库保存状态, 数据很多state db会膨胀, 我们探讨下一些解决方案。 2. couchdb集群 couchdb2.x支持集群, 分片, 应该能把数据分散到集群的其它节点。先简单过一下如何安装。 2.1 couchdb集群搭建 Fabric用到的couchdb镜像是自己打包的, 1.4对应的是hyperledger/fabric-couchdb:0.4.14, 不过很悲催, 笔者
Zealot · 21天前 
1.简介 Fabric 1.4引入operation service即运维服务接口, orderer,peer节点可提供http服务, 方便外部获取节点的运行指标,管理日志级别,健康检查。 2.如何使用运维服务 以fabirc-sample/first-network为例, ./byfn.sh up 2.1 Orderer节点运维服务 启动后连接到orderer容器 docker exec -it -e LINES=$(tput lines) -e COLUMNS=$(tput co
Zealot · 30天前 
1.使用场景 Fabric区块链网络一个channel即一个记账本, 在很多业务场景,一个记账本的数据自身组织可以读写,也可以提供给其它组织只读,部分读或部分写。数据隔离使用channel是粗粒度的,private data私有数据是fabric 1.2引入, 是为了在更细的粒度上控制数据访问。 2.如何使用私有数据? 以fabric-sample/chaincode/marble02_private弹珠游戏为例. (1)文件collections_config.json
Zealot · 31天前 
1.简介 Fabric CA基于开源项目CFSSL开发, 主要为fabric网络提供PKI证书服务,是MSP生成的基础。可能有人会问, 官方不是有cryptogen工具批量生成MSP吗? cryptogen实际是辅助测试工具,默认不同orderer,org都有不同的CA, 如果一个org要追加个peer或user, cryptogen就不管用了。生产环境我们建议使用fabric ca全面管理证书, 如果想简单来而区块链组织,节点和用户基本不会变, cryptogen也没问题。 2.
1.Kafka排序服务原理 官方文档在google doc上, 参考翻译 https://www.jianshu.com/p/db006359133d 2. kafka 排序服务安装 所有的代码已分享在https://github.com/zealzeng/kafka-orderer-demo 2.1 安装环境 官方文档有一些简单的描述 https://hyperledger-fabric.readthedocs.io/en/release-1.4/kafka.h