Windows10에 docker를 이용한 Hyperledger Fabric Samples를 구동하는 방법을 포스팅합니다.
6개월 전에..
설치 시도했다가 오류로 인해 실패했습니다.. ㅜㅜ 현재 개발을 Windows에서 진행하고 있는데 체인코드 개발을 Fabric 네트워크가 설치된 장비에 FTP로 올리고 명령어로 실행하고.. 오류 부분 확인해서 수정후 또 FTP로 올리고 명령어로 실행하고 이런 귀찮음을 방지하고 Windows에서 간단한 Fabric 네트워크를 구성하고 FTP로 올리는 귀찮음을 덜면 정말 좋겠다라고 생각했습니다. 6개월 전에 실패한 설치기를 다시 시도해보고 성공 결과를 올립니다.
설치한 Docker를 실행합니다. 이때 앞선 단계에서 Hyper-V를 설정했음에도 불구하고 Hyper-V를 사용할 수 없다는 팝업과 함께 Docker가 실행되지 않는다면 BIOS에서 가상화 기능이 켜져있는지 확인해야합니다. 가상화 기능 enable/disable는 메인보드 제조사마다 조금 상이하니 확인바랍니다. Docker 실행에 성공하면 작업표시줄 트레이에 고래가 컨테이너를 싣고있는 아이콘 트레이가 생깁니다.
https://git-scm.com/ Windows에서는 cmd(커맨드)창에서 명령어를 실행하는게 아닌 Git Bash를 이용해 아래의 명령어를 실행합니다. 따라서 Git Bash를 설치하기 위해 git을 설치합니다. 2.26.2 버전을 설치했고 옵션은 따로 건드리지 않고 기본옵션을 사용했습니다.
# don't rewrite paths for Windows Git Bash users export MSYS_NO_PATHCONV=1
docker-compose -f docker-compose.yml down Removing network net_basic Network net_basic not found.
docker-compose -f docker-compose.yml up -d ca.example.com orderer.example.com peer0.org1.example.com couchdb Creating network "net_basic" with the default driver Creating couchdb ... done Creating ca.example.com ... done Creating orderer.example.com ... done Creating peer0.org1.example.com ... done docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2ca1a7ca4131 hyperledger/fabric-peer "peer node start" Less than a second ago Up Less than a second 0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp peer0.org1.example.com c3065525760f hyperledger/fabric-orderer "orderer" 2 seconds ago Up 2 seconds 0.0.0.0:7050->7050/tcp orderer.example.com 756f03161e5f hyperledger/fabric-ca "sh -c 'fabric-ca-se…" 10 seconds ago Up 10 seconds 0.0.0.0:7054->7054/tcp ca.example.com e4dc3f6c1e35 hyperledger/fabric-couchdb "tini -- /docker-ent…" 19 seconds ago Up 19 seconds 4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp couchdb
#waitfor Hyperledger Fabric to start # incase of errors when running later commands, issue export FABRIC_START_TIMEOUT=<larger number> export FABRIC_START_TIMEOUT=10 #echo${FABRIC_START_TIMEOUT} sleep ${FABRIC_START_TIMEOUT}
# Create the channel docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel create -o orderer.example.com:7050 -c mychannel -f /etc/hyperledger/configtx/channel.tx 2020-05-30 00:28:15.276 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized 2020-05-30 00:28:15.300 UTC [cli.common] readBlock -> INFO 002 Received block: 0 # Join peer0.org1.example.com to the channel. docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel join -b mychannel.block 2020-05-30 00:28:15.621 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized 2020-05-30 00:28:15.723 UTC [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
채널 조인까지 완료되는 것을 볼 수 있습니다.
마무리
정리하고 보니 생각보다 이것저것 설치해야 할 것들이 많네요. 확실한건 Mac이나 Linux가 개발자들에게는 이런 불편함들을 어느정도 해소해줄 수 있는 OS이지 않을까 싶습니다. 이 포스트는 정말 Windows에서 환경구축이 필요해 임시적으로 쓰는 분들에게는 도움이 될 수 있을것 같습니다.