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
我使用 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