docker 的 Hyperledger Fabric 在重启后不存储数据

Hyperledger Fabric with docker not storing data after restart

我使用 docker 图像设置 Hyperledger Fabric V0.6。我编写了小型链码程序并执行了一些操作。正在根据 Hyperledger 区块链的请求存储和获取数据。

我重新启动我的链代码程序,数据仍然存在。当然,这应该是预期的行为。

但是当我使用命令 docker-compose down 停止我的 Hyperledger fabric 并使用 docker-compose start 再次启动它然后启动我的链代码程序时,我发现整个数据是重启前写的没了。我在我的区块链中找不到任何数据。

如何避免 Hyperledger 的这种行为?我是 运行 单身 peer/node。对于多个对等点,如果其中一个对等点重新启动,那么来自其他对等点的 data/transactions 会被复制到它上面。但是请考虑所有对等方都宕机的最坏情况。这是否意味着我们丢失了所有数据?

根据官方 docs docker-compose down 停止并 删除 docker-compose 文件 中列出的所有容器 及其卷(除非指定为外部卷,否则请查看文档)。

您可能希望使用 docker-compose stop 停止容器 - 这样在 docker-compose up 之后它们的数据将被保留。

A Note on Data Persistence

如果需要在对等容器或 CouchDB 容器上进行数据持久化,一种选择是将 docker-host 中的目录挂载到容器中的相关目录中。例如,您可以在 docker-compose-base.yaml 文件中的对等容器规范中添加以下两行:

volumes: - /var/hyperledger/peer0:/var/hyperledger/production

对于CouchDB容器,您可以在CouchDB容器规范中添加如下两行:

volumes: - /var/hyperledger/couchdb0:/opt/couchdb/data