hyperledger fabric explorer 超级账本区块链浏览器搭建-使用docker的方式快速搭建一个超级账本区块链浏览器
官方的github项目地址:
https://github.com/hyperledger/blockchain-explorer
Quick start (using Docker)
1、配置文件
# 新建文件夹,用于存放区块链浏览器搭建过程中的配置文件
mkdir explorer
cd explorer
# wget配置文件,由于被墙,可能无法直接获取
wget https://raw.githubusercontent.com/hyperledger/blockchain-explorer/main/examples/net1/config.json
wget https://raw.githubusercontent.com/hyperledger/blockchain-explorer/main/examples/net1/connection-profile/test-network.json -P connection-profile
wget https://raw.githubusercontent.com/hyperledger/blockchain-explorer/main/docker-compose.yaml
# 解决方法,手动创建配置文件,并通过访问下面网址,将配置文件内容复制进去
2、将区块链网络的证书文件整个目录复制到 explorer下,并重命名为organizations:
cd /root/block/geneg/twonodes/
cp -r crypto-config ../explorer/organizations
3、配置文件存放目录结构如下:
# 因为我们有两个peer节点,org1和org2
explorer
|___docker-compose.yaml
|___config.json
|___connection-profile
|___org1-network.json
|___org2-network.json
root@aa:~/block/geneg# cd /root/block/geneg/
root@aa:~/block/geneg# pwd
/root/block/geneg
root@aa:~/block/geneg# ls
twonodes
root@aa:~/block/geneg# mkdir explorer
root@aa:~/block/geneg# ls
explorer twonodes
root@aa:~/block/geneg# cd explorer
root@aa:~/block/geneg/explorer# mkdir connection-profile
root@aa:~/block/geneg/explorer# ls
connection-profile
(1)新文件:docker-compose.yaml,内容如下
? https://github.com/hyperledger/blockchain-explorer/blob/main/docker-compose.yaml
networks:
mynetwork.com:
external:
name: fabric_test # 这个地方要改成自己的网络名称
# 修改成自己的文件挂载路径
volumes:
- ${EXPLORER_CONFIG_FILE_PATH}:/opt/explorer/app/platform/fabric/config.json
- ${EXPLORER_PROFILE_DIR_PATH}:/opt/explorer/app/platform/fabric/connection-profile
- ${FABRIC_CRYPTO_PATH}:/tmp/crypto
- walletstore:/opt/explorer/wallet # 后面又提到,先往后找一找
# SPDX-License-Identifier: Apache-2.0
version: '2.1'
volumes:
pgdata:
walletstore:
networks:
mynetwork.com:
external:
name: twonodes_test
services:
explorerdb.mynetwork.com:
image: hyperledger/explorer-db:latest
container_name: explorerdb.mynetwork.com
hostname: explorerdb.mynetwork.com
environment:
- DATABASE_DATABASE=fabricexplorer
- DATABASE_USERNAME=hppoc
- DATABASE_PASSWORD=password
healthcheck:
test: "pg_isready -h localhost -p 5432 -q -U postgres"
interval: 30s
timeout: 10s
retries: 5
volumes:
- pgdata:/var/lib/postgresql/data
networks:
- mynetwork.com
explorer.mynetwork.com:
image: hyperledger/explorer:latest
container_name: explorer.mynetwork.com
hostname: explorer.mynetwork.com
environment:
- DATABASE_HOST=explorerdb.mynetwork.com
- DATABASE_DATABASE=fabricexplorer
- DATABASE_USERNAME=hppoc
- DATABASE_PASSWD=password
- LOG_LEVEL_APP=info
- LOG_LEVEL_DB=info
- LOG_LEVEL_CONSOLE=debug
- LOG_CONSOLE_STDOUT=true
- DISCOVERY_AS_LOCALHOST=false
volumes:
- ./config.json:/opt/explorer/app/platform/fabric/config.json
- ./connection-profile:/opt/explorer/app/platform/fabric/connection-profile
- ./organizations:/tmp/crypto
- walletstore:/opt/explorer/wallet
ports:
- 8080:8080
depends_on:
explorerdb.mynetwork.com:
condition: service_healthy
networks:
- mynetwork.com
(2)新文件:org1-network.json,内容如下
? https://github.com/hyperledger/blockchain-explorer/blob/main/examples/net1/connection-profile/test-network.json
“name”: “test-network”, 这一项可以自定义,但是在 config.json加载配置文件路径项
“profile”: “./connection-profile/test-network.json” 要对应上
{
"name": "org1-network",
"version": "1.0.0",
"client": {
"tlsEnable": true,
"adminCredential": {
"id": "exploreradmin",
"password": "exploreradminpw"
},
"enableAuthentication": true,
"organization": "Org1MSP",
"connection": {
"timeout": {
"peer": {
"endorser": "300"
},
"orderer": "300"
}
}
},
"channels": {
"mychannel": {
"peers": {
"peer0.org1.example.com": {}
}
}
},
"organizations": {
"Org1MSP": {
"mspid": "Org1MSP",
"adminPrivateKey": {
"path": "/tmp/crypto/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/priv_sk"
},
"peers": ["peer0.org1.example.com"],
"signedCert": {
"path": "/tmp/crypto/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem"
}
}
},
"peers": {
"peer0.org1.example.com": {
"tlsCACerts": {
"path": "/tmp/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt"
},
"url": "grpcs://peer0.org1.example.com:7051"
}
}
}
# 这里的id和password为一会登录的账号和密码
"adminCredential": {
"id": "exploreradmin",
"password": "exploreradminpw"
}
(3)新文件:org2-network.json,内容如下
{
"name": "org2-network",
"version": "1.0.0",
"client": {
"tlsEnable": true,
"adminCredential": {
"id": "exploreradmin",
"password": "exploreradminpw"
},
"enableAuthentication": true,
"organization": "org2MSP",
"connection": {
"timeout": {
"peer": {
"endorser": "300"
},
"orderer": "300"
}
}
},
"channels": {
"mychannel": {
"peers": {
"peer0.org2.example.com": {}
}
}
},
"organizations": {
"org2MSP": {
"mspid": "org2MSP",
"adminPrivateKey": {
"path": "/tmp/crypto/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/keystore/priv_sk"
},
"peers": ["peer0.org2.example.com"],
"signedCert": {
"path": "/tmp/crypto/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/signcerts/User1@org2.example.com-cert.pem"
}
}
},
"peers": {
"peer0.org2.example.com": {
"tlsCACerts": {
"path": "/tmp/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt"
},
"url": "grpcs://peer0.org2.example.com:7051"
}
}
}
(4)新文件:config.json,内容如下
https://github.com/hyperledger/blockchain-explorer/blob/main/examples/net1/config.json
{
"network-configs": {
"org1-network": {
"name": "org1-network",
"profile": "./connection-profile/org1-network.json"
},
"org2-network": {
"name": "org2-network",
"profile": "./connection-profile/org2-network.json"
}
},
"license": "Apache-2.0"
}
4、docker-compose 跑起服务
root@kai:~/block/geneg# cd explorer
root@kai:~/block/geneg/explorer# pwd
/root/block/geneg/explorer
root@kai:~/block/geneg/explorer# ls
config.json connection-profile docker-compose.yaml organizations
root@kai:~/block/geneg/explorer# docker-compose up -d
Recreating explorerdb.mynetwork.com ... done
Creating explorer.mynetwork.com ... done
root@kai:~/block/geneg/explorer# docker ps -a
hyperledger/explorer:latest
hyperledger/explorer-db:latest
5、浏览器上访问:
云主机ip:8080
账号 "exploreradmin",
密码 "exploreradminpw"
|