超级账本docker-compose部分介绍
Posted 小生凡一
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了超级账本docker-compose部分介绍相关的知识,希望对你有一定的参考价值。
目录
1. docker-compose 管理容器
节点在docker
容器中运行,docker-compose
管理docker
容器
examples/e2e_cli/docker-compose-cli.yaml
version:# docker-compose的版本
volume:# 数据卷,指定Docker中一块持久化的区域,该区域在容器消失之后,还可以依然将区域中的数据保存下来。这部分区域不在属于某一个容器了,而是由dockercompose管理的一部分区域
networks:# 网络,所有的docker在同一个网络才能进行数据通信
services:# 服务,orderer和peer组织的节点
orderer.example.com: # 服务名(排序节点和peer节点)
extends: # 继承了下面file路径下文件的一些属性
file:base/docker-compose-base.yaml # 不用改
service:orderer.example.com # 和前面的服务名保持一致
container_name:orderer.example.com # 容器名,和前面的服务名保持一致
cli:客户端服务(java sdk,go sdk,shell)
container_name:cli # 容器名
image:hyperledger/fabric-tools:latest # fabric镜像路径,可以指定tag
tty:true # 启动容器的时候状态可能为:Exited (0) About a minute ago,需要设置tty为true
stdin_open:true # 标准输入,true或false
environment: # 环境变量相关设置
working_dir: # 工作目录
commend: # 启动docker后执行的命令
volumes: # 数据卷
# 挂载目录,默认就行
- /var/run/:/host/var/run/
# 链码存放路径(go或者node.js写的链代码)
- ../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/
# 生成的创世块和管道以及更新的锚节点文件存放的路径(tx和block后缀的文件)
- ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
# 注意:./channel-artifacts这种是指路径,需要本地有这个路径,或者改成自己的路径
depends_on: # 启动顺序
- orderer.example.com
- peer0.org1.example.com
- peer1.org1.example.com
- peer0.org2.example.com
- peer1.org2.example.com
base的路径:examples/e2e_cli/base
启动容器的数量 = depends_on
的数量 + cli
的数量
2. fabric 相关 docker 镜像
都在hyperleger路径下
fabric-peer:peer节点镜像
fabric-orderer:orderer节点镜像
fabric-tools:工具镜像,cryptogen等工具都在这里面
fabric-ca:ca模块镜像,可以用来生成账号
fabric-ccenv:go语言链码运行环境镜像
fabric-kafka:kafka镜像
fabric-zookeeper:zookeeper镜像
fabric-couchdb:couchdb数据库镜像
3. docker-compose-base.yaml 配置
路径:examples/e2e_cli/base/docker-compose-base.yaml
version: # 版本号
services:# 服务,有排序节点、peer节点等
# 服务名
continer_name:# 容器名
image:# 镜像路径:lastst
enviroment:# 环境
working_dir:# 工作目录
commend:# 启动后执行的命令
volumens:# 挂载创世块,证书,通道的文件
# 注意第一个路径是自己存放文件的路径,第二个对应的docker中的,不需要改,多了个本地路径和docker服务器镜像的路径
ports:# 端口映射
4. peer-base.yaml配置
version: '2' # 版本号
services:
peer-base: # 服务名,和docker-compose-base.yaml中保持一致
image: hyperledger/fabric-peer # 镜像,:latest
environment:
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock # socket套接字
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=e2ecli_default # 网络模式
- CORE_LOGGING_LEVEL=DEBUG #日志級別
- CORE_PEER_TLS_ENABLED=true # 是否tls加密
- CORE_PEER_GOSSIP_USELEADERELECTION=true
# 是否自动选举leader节点,建议设置为true,当一个leader挂掉后会自动产生leader
- 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
5. 环境变量
5.1 客户端cli环境变量:docker-compose-cli.yaml
- GOPATH=/opt/gopath # go的工作目录
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock # 守护进程的套接字,不用改
- CORE_LOGGING_LEVEL=DEBUG # 日志級別 ,critical、error、warning、notice、info、debug
- CORE_PEER_ID=cli# peer节点的id,自己指定一个就行,就是当前客户端节点的id
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # 要连接的peer节点
- CORE_PEER_LOCALMSPID=Org1MSP # peer组织id
- CORE_PEER_TLS_ENABLED=true # 是否使用tls加密,通信的时候
- CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt # tls证书文件
- CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key # tls私钥文件
- CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt # 根证书文件
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp # 指定客户端的身份,管理员身份目录
5.2 排序节点orderer
环境变量:docker-compose-base.yaml
- ORDERER_GENERAL_LOGLEVEL=debug # 日志級別
- ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 # 监听地址
- ORDERER_GENERAL_GENESISMETHOD=file # 创世块来源,这里file指来源于文件
- ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/orderer.genesis.block # 创世块对应的文件,不是指本地的,是docker中的,base.yaml中orderer的volume关联
- ORDERER_GENERAL_LOCALMSPID=OrdererMSP # orderer节点的id
- ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp # orderer节点的msp路径,不是指本地的,是docker中的,base.yaml中orderer的volume关联
- ORDERER_GENERAL_TLS_ENABLED=true # enabled TLS,是否使用tls加密
- ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key # 私钥,不是指本地的,是docker中的,base.yaml中orderer的volume关联
- ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt # 证书,不是指本地的,是docker中的,base.yaml中orderer的volume关联
- ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt] # 根证书,不是指本地的,是docker中的,base.yaml中orderer的volume关联
5.3 peer节点环境变量:docker-compose-base.yaml
和peer-base.yaml
# 当前peer节点的名字,可以改 CORE_PEER_ID=peer0.org1.example.com 访问地址
CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # chaincode 监听地址
CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052 #被组织外节点识别时的地址,以加入网络
CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051 #peer节点的组织名 CORE_PEER_LOCALMSPID=Org1MSP
CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock # socket套接字
CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=e2ecli_default # 网络模式
CORE_LOGGING_LEVEL=DEBUG # 日志級別
CORE_PEER_TLS_ENABLED=true # 是否tls加密
CORE_PEER_GOSSIP_USELEADERELECTION=true
# 是否自动选举leader节点,建议设置为true,当一个leader挂掉后会自动产生leader
CORE_PEER_GOSSIP_ORGLEADER=false
# 当前节点是否是leader节点,建议设置为false,让自动选举产生leader即可
CORE_PEER_PROFILE_ENABLED=true # profile服务是否开启
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 # 根证书,ca证书
6. leader节点
peer
节点之间通信,peer
和orderer
节点通信的节点叫leader
,通过选举产生,只有leader
才可以和orderer
节点进行通信
7. docker-compose启动
-
启动
docker-compose -f docker-compose-cli.yaml up -d
-f:指定配置文件,默认是docker-compose.yml或docker-compose.yaml
-d:以守护进程运行 -
查看启动状态
docker-compose ps
docker-compose -f docker-compose-cli.yaml ps -
停止
docker-compose down -v
-f 文件路径,默认文件名是docker-compose.yaml
-v 详细信息 -
查看所有容器
docker ps -a -
删除容器
docker rm 687b66dd8e36(容器id) -
查看日志
docker logs 9a1a500bf720(容器id)
最后
小生凡一,期待你的关注。
以上是关于超级账本docker-compose部分介绍的主要内容,如果未能解决你的问题,请参考以下文章
超级账本cryptogen 与 configtxgen 模块介绍
创建自己的超级账本结构网络错误主-> CRIT 003 无法定义没有应用程序部分的新通道