关闭开发环境后部署丢失、重启PC后业务网络连接问题咨询
问题1:关闭开发环境后部署丢失,如何保留?
这是默认Composer开发环境的典型坑——官方快速启动的Fabric测试网、composer-playground容器都是临时容器化环境,容器停止后内部的链码数据、网络配置会被直接清除。要留存部署,你可以从这几个方向解决:
打包业务网络定义:每次部署完成后,把你的业务网络打包成
.bna归档文件,这相当于保存了网络的完整定义。执行命令:composer archive create -t dir -n .命令会在当前目录生成
<你的网络名称>.bna文件,把它存到本地安全位置,后续随时可以用它重新部署。改用持久化Fabric环境:别用默认的临时测试网,自己搭建带数据持久化的Fabric节点。修改Docker Compose配置文件,给Peer节点的CouchDB、Peer容器添加本地卷映射,让数据存在宿主机磁盘而非容器内部。比如在
docker-compose.yml里给CouchDB加:volumes: - ./couchdb-data:/opt/couchdb/data这样就算容器重启,数据库数据也不会丢失。
导出业务卡片:在Composer Playground登录到你的业务网络后,点击右上角卡片图标,选择导出卡片保存成
.card文件。下次重启环境后,直接导入这个卡片就能重新连接到已部署的网络,无需重复部署。
问题2:重启后无法连接网络,但卡片存在,需要重新部署吗?
完全不需要重新部署!这个问题90%是因为Fabric底层容器没启动,或者卡片的连接配置和当前环境不匹配。按下面步骤排查修复:
检查Fabric容器状态:打开终端执行
docker ps,看看Peer、Orderer、CouchDB这些核心容器是否在运行。如果没启动,找到你的Fabric环境的docker-compose.yml文件,执行:docker-compose up -d启动所有必要容器。
验证网络是否存活:用已有的卡片执行命令,检查网络状态:
composer network list -c <你的卡片名称>如果能列出网络的节点和链码信息,说明网络还在,只是Playground连接没刷新——刷新页面或重新导入卡片即可。
检查卡片连接配置:如果上面两步没用,解压导出的
.card文件,查看里面的connection.json,确认Peer地址、端口和当前运行的Fabric容器一致。偶尔重启后容器IP会变化(如果用了非localhost地址),这时候更新connection.json重新打包卡片,再导入Playground就能解决。
总结:只要你提前打包了.bna或用了持久化Fabric,就不用每次重启都重新部署,修复连接问题即可。
内容的提问来源于stack exchange,提问作者mohammadjh

