У меня есть настройка env Hyperledger Fabric 0.6 в 64-битной ОС Windows 7 с использованием docker-Toolbox, и я использую клиент REST API для запуска запросов. Ниже приведен мой файл создания докеров с четырьмя одноранговыми узлами ca.yaml:
version: "2"
services: baseimage: image: hyperledger/fabric-baseimage:latest
membersrvc:
image: hyperledger/fabric-membersrvc
ports:
- "7054:7054"
command: membersrvc
environment:
- MEMBERSRVC_CA_LOGGING_SERVER=INFO
- MEMBERSRVC_CA_LOGGING_CA=INFO
- MEMBERSRVC_CA_LOGGING_ECA=INFO
- MEMBERSRVC_CA_LOGGING_ECAP=INFO
- MEMBERSRVC_CA_LOGGING_ECAA=INFO
- MEMBERSRVC_CA_LOGGING_ACA=INFO
- MEMBERSRVC_CA_LOGGING_ACAP=INFO
- MEMBERSRVC_CA_LOGGING_TCA=INFO
- MEMBERSRVC_CA_LOGGING_TCAP=INFO
- MEMBERSRVC_CA_LOGGING_TCAA=INFO
- MEMBERSRVC_CA_LOGGING_TLSCA=INFO
vp0:
image: hyperledger/fabric-peer
volumes: - /var/run/docker.sock:/var/run/docker.sock
ports:
- "7050:7050"
- "7051:7051"
- "7053:7053"
environment:
- CORE_PEER_ID=vp0
- CORE_SECURITY_ENROLLID=test_vp0
- CORE_SECURITY_ENROLLSECRET=MwYpmSRjupbT
- CORE_PEER_DISCOVERY_PERIOD=60s
- CORE_PEER_DISCOVERY_TOUCHPERIOD=61s
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_VM_ENDPOINT=unix:///var/run/docker.sock
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
- CORE_SECURITY_ENABLED=true
- CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft
- CORE_PBFT_GENERAL_MODE=batch
- CORE_PBFT_GENERAL_N=4
command: sh -c "sleep 10; peer node start"
links: - membersrvc
vp1:
image: hyperledger/fabric-peer
volumes: - /var/run/docker.sock:/var/run/docker.sock
ports:
- "8050:7050"
- "8051:7051"
- "8053:7053"
environment:
- CORE_PEER_DISCOVERY_ROOTNODE=vp0:7051
- CORE_PEER_ID=vp1
- CORE_SECURITY_ENROLLID=test_vp1
- CORE_SECURITY_ENROLLSECRET=5wgHK9qqYaPy
- CORE_PEER_DISCOVERY_PERIOD=60s
- CORE_PEER_DISCOVERY_TOUCHPERIOD=61s
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_VM_ENDPOINT=unix:///var/run/docker.sock
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
- CORE_SECURITY_ENABLED=true
- CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft
- CORE_PBFT_GENERAL_MODE=batch
- CORE_PBFT_GENERAL_N=4
links: - membersrvc - vp0
command: sh -c "sleep 10; peer node start"
vp2:
image: hyperledger/fabric-peer
volumes: - /var/run/docker.sock:/var/run/docker.sock
ports:
- "9050:7050"
- "9051:7051"
- "9053:7053"
environment:
- CORE_PEER_DISCOVERY_ROOTNODE=vp0:7051
- CORE_PEER_ID=vp2
- CORE_SECURITY_ENROLLID=test_vp2
- CORE_SECURITY_ENROLLSECRET=vQelbRvja7cJ
- CORE_PEER_DISCOVERY_PERIOD=60s
- CORE_PEER_DISCOVERY_TOUCHPERIOD=61s
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_VM_ENDPOINT=unix:///var/run/docker.sock
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
- CORE_SECURITY_ENABLED=true
- CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft
- CORE_PBFT_GENERAL_MODE=batch
- CORE_PBFT_GENERAL_N=4
links: - membersrvc - vp0
command: sh -c "sleep 10; peer node start"
vp3:
image: hyperledger/fabric-peer
volumes: - /var/run/docker.sock:/var/run/docker.sock
ports:
- "10050:7050"
- "10051:7051"
- "10053:7053"
environment:
- CORE_PEER_DISCOVERY_ROOTNODE=vp0:7051
- CORE_PEER_ID=vp3
- CORE_SECURITY_ENROLLID=test_vp3
- CORE_SECURITY_ENROLLSECRET=9LKqKH5peurL
- CORE_PEER_DISCOVERY_PERIOD=60s
- CORE_PEER_DISCOVERY_TOUCHPERIOD=61s
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_VM_ENDPOINT=unix:///var/run/docker.sock
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
- CORE_SECURITY_ENABLED=true
- CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=pbft
- CORE_PBFT_GENERAL_MODE=batch
- CORE_PBFT_GENERAL_N=4
links: - membersrvc - vp0
command: sh -c "sleep 10; peer node start"**
//------------ с помощью команды docker-compose up мой сервер работает и все 4 пира успешно созданы. в другом терминале докера я выполнил следующую команду, которая также работает нормально:
CORE_CHAINCODE_ID_NAME=mycc006 CORE_PEER_ADDRESS=192.168.99.100:7051 ./chaincode_example02
Поскольку я использую панель инструментов docker, только 192.168.99.100 является приемлемым IP-адресом для CORE_PEER_ADDRESS.
Запрос REST API отвечает только на - 192.168.99.100:7050/chaincode для всех операций
Вы можете видеть в файле docker-compose выше, что я сопоставил vp1, vp2, vp3 с разными портами и перенаправил на vp0.
Но когда я пытаюсь использовать любой другой одноранговый узел, например vp1, использующий 192.168.99.100:8050/chaincode, запрос терпит неудачу, так как нет ответа от vp1, vp2, vp3, хотя я специально сопоставил порты с этими одноранговыми узлами. Команда Docker ps показывает, что memersrvc и все 4 одноранговых контейнера работают, но порты назначены только для vp0.
Как сопоставить другие одноранговые узлы vp1, vp2, vp3 с портами, чтобы получить к ним доступ через REST API? Будем признательны за любую помощь или рекомендации.
Спасибо.