Couchdb 在hyperledger结构中添加数据持久性

Couchdb 在hyperledger结构中添加数据持久性,couchdb,hyperledger-fabric,Couchdb,Hyperledger Fabric,我已经建立了一个hyperledger结构网络。下面是我的docker compose.yaml文件中的当前配置 peer0.org1.example.com: container_name: peer0.org1.example.com image: hyperledger/fabric-peer:latest environment: - GODEBUG=netdns=go - CORE_PEER_ID=peer0.org1.example

我已经建立了一个hyperledger结构网络。下面是我的
docker compose.yaml
文件中的当前配置

  peer0.org1.example.com:
    container_name: peer0.org1.example.com
    image: hyperledger/fabric-peer:latest
    environment:
      - GODEBUG=netdns=go
      - CORE_PEER_ID=peer0.org1.example.com
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org1.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_example
      - FABRIC_LOGGING_SPEC=INFO
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_GOSSIP_USELEADERELECTION=true
      - CORE_PEER_GOSSIP_ORGLEADER=false
      - CORE_PEER_PROFILE_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
      - CORE_LEDGER_STATE_STATEDATABASE=CouchDB
      - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb0:5984
      - CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME=
      - CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD=
    volumes:
      - /var/run/:/host/var/run/
      - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
      - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
      - peer0.org1.example.com:/var/hyperledger/production
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: peer node start
    ports:
      - 7051:7051
      - 7053:7053
    depends_on:
      - couchdb0
    networks:
      - example

  couchdb0:
    container_name: couchdb0
    image: hyperledger/fabric-couchdb
    environment:
      - COUCHDB_USER=
      - COUCHDB_PASSWORD=
    ports:
      - "5984:5984"
    networks:
      - example
我错过了添加数据持久性配置的机会。 下面我将添加数据持久性。 因此,在我在
fabric couchdb
中添加以下行之后,它将使用主机的指定文件系统来存储数据

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

但我无法弄清楚的是,我们现在如何检索网络中的当前数据。默认情况下,
fabric couchdb
在哪里存储数据?我们不能将旧数据从默认文件夹位置复制到新文件夹位置吗?

如果您如您所说定义CouchDB卷,您的主机文件夹应该位于
/var/hyperledger/couchdb0

您可以始终运行
docker volume ls
docker volume检查您的\u volume\u name
,以检查卷的装入点

如果尚未为容器定义卷,并且希望检索文件夹(我认为这是您的问题),请尝试:

docker cp couchdb0:/opt/couchdb/data your-host-destination-folder

这是couchdb容器的默认位置,所有数据都保存在此目录:/opt/couchdb/data中。是的,您可以从此目录复制couchdb的数据。
/opt/couchdb/data
主机中不存在此路径。如果我执行docker exec-it couchdb0 bash,那么我可以看到路径
/opt/couchdb/data
下存在文件。但是在主机中我在哪里可以找到相同的文件呢?注意:我没有在docker compose.yml中进行目录映射,如果您没有进行目录映射,那么它将不在主机中,只在docker容器中。但您可以使用docker cp命令复制该数据,如下面的答案中@kekomal所示。添加上述指定卷后,从现在起,数据将在主机中更新,路径为:/var/hyperledger/couchdb0