前提
cryptogen生成的文件放置在./crypto-config内。
configtxgen生成的文件放置在./channel-artifacts内。
compose配置文件:
docker-compose-peerX-orgY.yaml
|-base/peer-base.yaml
peer-base
version: '2'
services:
peer-base:
#peer的镜像
image: hyperledger/fabric-peer
#变量
environment:
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=artifacts_default
- CORE_LOGGING_LEVEL=DEBUG
- 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
#工作目录
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
#默认执行命令
command: peer node start
docker-compose-peerX-orgY
#每个peer对应一个peerX.orgY.example.com
version: '2'
services:
#容器名称
container_name: couchdbX.orgY.example.com
#fabric-couchdb镜像
image: hyperledger/fabric-couchdb
#挂载
volumes:
- ./chainData/couchdb/couchdbXorgY:/opt/couchdb/data
#peer
#容器名称
container_name: peerX.orgY.example.com
#引用的服务
extends:
file: peer-base.yaml
service: peer-base
#变量
environment:
- CORE_PEER_ID=peerX.orgY.example.com
- CORE_PEER_ADDRESS=peerX.orgY.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peerX.orgY.example.com:7052
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peerX.orgY.example.com:7051
- CORE_PEER_GOSSIP_BOOTSTRAP=peerX.orgY.example.com:7051
- CORE_PEER_LOCALMSPID=OrgYMSP
- CORE_LEDGER_STATE_STATEDATABASE=CouchDB
- CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdbX.orgY.example.com:5984
#挂载
volumes:
- /var/run/:/host/var/run/
# 数据固化,将peer的数据映射到本地,防止丢失
- ./chainData/peer/peerXorgY:/var/hyperledger/production/
- ./crypto-config/peerOrganizations/orgY.example.com/peers/peerX.orgY.example.com/msp:/etc/hyperledger/fabric/msp
- ./crypto-config/peerOrganizations/orgY.example.com/peers/peerX.orgY.example.com/tls:/etc/hyperledger/fabric/tls
- 7051:7051
- 7052:7052
- 7053:7053
#其他peer和所有orderer容器的主机名与IP
extra_hosts:
#注意:这是以peer1.org2.example.com为例,本身的不需要设置
- "orderer1.example.com:10.0.200.111"
- "orderer2.example.com:10.0.200.113"
- "orderer3.example.com:10.0.200.114"
- "peer0.org1.example.com:10.0.200.113"
- "peer1.org1.example.com:10.0.200.114"
- "peer0.org2.example.com:10.0.200.115"
#cli
examplecli:
#容器名称
container_name: examplecli
#cli的镜像
image: hyperledger/fabric-tools
#模拟一个伪终端
tty: true
#变量
environment:
- CORE_PEER_CHAINCODELISTENADDRESS=peerX.orgY.example.com:7052
- GOPATH=/opt/gopath
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ID=examplecli
- CORE_PEER_ADDRESS=peerX.orgY.example.com:7051
- CORE_PEER_LOCALMSPID=OrgYMSP
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/orgY.example.com/peers/peerX.orgY.example.com/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/orgY.example.com/peers/peerX.orgY.example.com/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/orgY.example.com/peers/peerX.orgY.example.com/tls/ca.crt
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/orgY.example.com/users/[email protected]/msp
#工作目录
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
- /var/run/:/host/var/run/
- ./chaincode/go/:/opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go
- ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
- ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/
- ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
#依赖服务
depends_on:
#所有peer和orderer容器的主机名与IP
extra_hosts:
- "orderer1.example.com:10.0.200.111"
- "orderer2.example.com:10.0.200.113"
- "orderer3.example.com:10.0.200.114"
- "peer0.org1.example.com:10.0.200.113"
- "peer1.org1.example.com:10.0.200.114"
- "peer0.org2.example.com:10.0.200.115"
- "peer1.org2.example.com:10.0.200.116"