我使用docker镜像设置Hyperledger Fabric V0.6。我写了小链代码程序并执行一些操作。根据Hyperledger区块链的请求存储和提取数据。
我重启了我的链码程序,数据仍然存在。 Ofcouse这应该是预期的行为。
但是当我使用命令docker-compose停止我的Hyperledger结构并使用docker-compose start再次启动它然后启动我的chaincode程序时,我发现在重启之前写入的整个数据都消失了。我在区块链中找不到任何数据。
如何避免Hyperledger的这种行为?我在单个对等体/节点上运行它。对于多个对等体,如果其中一个对等体重新启动,则来自其他对等体的数据/事务将被复制到其上。但考虑到最糟糕的情况,所有同行都会失败。这是否意味着我们放弃了所有数据?
答案 0 :(得分:7)
根据官方docs docker-compose down
停止和删除 docker-compose文件中中列出的所有容器及其卷(除非指定为外部,请查看文档。)
您可能希望使用docker-compose stop
停止容器 - 这样,docker-compose up
数据将被保留。
答案 1 :(得分:0)
如果在对等容器或CouchDB容器上需要数据持久性,则可以选择将docker-host中的目录挂载到容器中的相关目录中。例如,您可以在docker-compose-base.yaml
文件中的对等容器规范中添加以下两行:
volumes:
- /var/hyperledger/peer0:/var/hyperledger/production
对于CouchDB容器,您可以在CouchDB容器规范中添加以下两行:
volumes:
- /var/hyperledger/couchdb0:/opt/couchdb/data