# 閫氳繃Docker閮ㄧ讲閾� 浠ヨ瘉涔﹁处鎴锋ā寮忕殑閾句负渚嬶紝鍏朵粬璐︽埛妯″紡鐨勯摼锛屾祦绋嬬被浼硷紝鍙嚜琛屽€熼壌 ## 浣跨敤chainmaker-go鑷甫璇佷功鍚姩docker閾� 娉細姝や负鑷缂栬瘧docker 闀滃儚绀轰緥锛岃嫢鎯充娇鐢ㄦ渶鏂板畼缃戦暅鍍忥紝璇蜂慨鏀归暅鍍忓悕绉般€俒鏌ョ湅闀滃儚](https://hub.docker.com/r/chainmakerofficial/chainmaker/tags?page=1&ordering=last_updated) ```sh cd chainmaker-go/scripts/docker/2.3.0 # 鍚姩 ./four-nodes_up.sh # 绛夊緟10s宸﹀彸锛屽彂浜ゆ槗 cd .. && ./sendTx.sh # 鍋滄骞跺垹闄ゆ暟鎹� ./2.3.0/four-nodes_down.sh ``` ## 浣跨敤鏂扮敓鎴愮殑璇佷功鍚姩docker閾� ### 閰嶇疆璇佷功鐢熸垚鑺傜偣涓暟 - 杩涘叆`chainmaker-go/tools/chainmaker-cryptogen/config`鐩綍锛屼慨鏀筦crypto_config_template.yml`鏂囦欢涓璥count` ``` crypto_config: - domain: chainmaker.org host_name: wx-org count: 4 # change this what you want, example is 7 node ``` ### 璇佷功鐢熸垚 - 杩涘叆chainmaker-go/scripts鐩綍锛屾墽琛宲repare.sh鑴氭湰鐢熸垚鍗曢摼4鑺傜偣闆嗙兢閰嶇疆锛屽瓨浜庤矾寰刢hainmaker-go/build涓� ``` # 杩涘叆鑴氭湰鐩綍 $ cd ../scripts # 鏌ョ湅鑴氭湰甯姪 $ ./prepare.sh -h Usage: prepare.sh node_cnt(1/4/7/10/13/16) chain_cnt(1-4) p2p_port(default:11301) rpc_port(default:12301) eg1: prepare.sh 4 1 eg2: prepare.sh 4 1 11301 12301 # 鐢熸垚鍗曢摼4鑺傜偣闆嗙兢鐨勮瘉涔﹀拰閰嶇疆 $ ./prepare.sh 4 1 begin check params... begin generate certs, cnt: 4 input consensus type (0-SOLO,1-TBFT(default),3-HOTSTUFF,4-RAFT,5-DPOS): input log level (DEBUG|INFO(default)|WARN|ERROR): enable docker vm (YES|NO(default)) begin generate node1 config... begin generate node2 config... begin generate node3 config... begin generate node4 config... # 鏌ョ湅鐢熸垚濂界殑鑺傜偣璇佷功鍜岄厤缃� $ tree -L 3 ../build/ ../build/ 鈹溾攢鈹€ config 鈹� 鈹溾攢鈹€ node1 鈹� 鈹� 鈹溾攢鈹€ certs 鈹� 鈹� 鈹溾攢鈹€ chainconfig 鈹� 鈹� 鈹溾攢鈹€ chainmaker.yml 鈹� 鈹� 鈹斺攢鈹€ log.yml 鈹� 鈹溾攢鈹€ node2 鈹� 鈹� 鈹溾攢鈹€ certs 鈹� 鈹� 鈹溾攢鈹€ chainconfig 鈹� 鈹� 鈹溾攢鈹€ chainmaker.yml 鈹� 鈹� 鈹斺攢鈹€ log.yml 鈹� 鈹溾攢鈹€ node3 鈹� 鈹� 鈹溾攢鈹€ certs 鈹� 鈹� 鈹溾攢鈹€ chainconfig 鈹� 鈹� 鈹溾攢鈹€ chainmaker.yml 鈹� 鈹� 鈹斺攢鈹€ log.yml 鈹� 鈹斺攢鈹€ node4 鈹� 鈹溾攢鈹€ certs 鈹� 鈹溾攢鈹€ chainconfig 鈹� 鈹溾攢鈹€ chainmaker.yml 鈹� 鈹斺攢鈹€ log.yml 鈹溾攢鈹€ crypto-config 鈹� 鈹溾攢鈹€ wx-org1.chainmaker.org 鈹� 鈹� 鈹溾攢鈹€ ca 鈹� 鈹� 鈹溾攢鈹€ node 鈹� 鈹� 鈹斺攢鈹€ user 鈹� 鈹溾攢鈹€ wx-org2.chainmaker.org 鈹� 鈹� 鈹溾攢鈹€ ca 鈹� 鈹� 鈹溾攢鈹€ node 鈹� 鈹� 鈹斺攢鈹€ user 鈹� 鈹溾攢鈹€ wx-org3.chainmaker.org 鈹� 鈹� 鈹溾攢鈹€ ca 鈹� 鈹� 鈹溾攢鈹€ node 鈹� 鈹� 鈹斺攢鈹€ user 鈹� 鈹斺攢鈹€ wx-org4.chainmaker.org 鈹� 鈹溾攢鈹€ ca 鈹� 鈹溾攢鈹€ node 鈹� 鈹斺攢鈹€ user 鈹斺攢鈹€ crypto_config.yml ``` ### 闀滃儚閰嶇疆 - 杩涘叆`chainmaker-go/scripts/docker/multi_node`鐩綍锛屼慨鏀筦create_docker_compose_yml.sh`涓璉MAGE涓烘墍闇€闀滃儚 ``` P2P_PORT=$1 RPC_PORT=$2 NODE_COUNT=$3 CONFIG_DIR=$4 SERVER_COUNT=$5 IMAGE="chainmakerofficial/chainmaker:v2.2.0" # change this ``` ### 鍒涘缓docker-compose.yaml鏂囦欢 - 灏嗙敓鎴愮殑璇佷功閰嶇疆鏂囦欢鏀惧埌`scripts/docker/multi_node`鐩綍涓紝鐒跺悗淇敼瀵瑰簲`chainmaker.yml`鏂囦欢涓殑鏈湴ip - 浣跨敤`create_docker_compose_yml.sh`杩涜docker-compose.yml鏂囦欢鐢熸垚 ``` $ cd chainmaker-go $ cp -rf build/config scripts/docker/multi_node/ $ cd scripts/docker/multi_node # change ip what you want(LAN IP of the container), as 192.168.1.35 not localhost or 127.0.0.1 $ sed -i "s%127.0.0.1%192.168.1.35%g" config/node*/chainmaker.yml # check help $ ./create_docker_compose_yml.sh Usage: create_yml.sh P2P_PORT RPC_PORT NODE_COUNT CONFIG_DIR SERVER_NODE_COUNT P2P_PORT: peer to peer connect RPC_PORT: sdk to peer connect NODE_COUNT: total node count CONFIG_DIR: all node config path, relative or absolute SERVER_NODE_COUNT: default:100, number of nodes per server eg: ./create_docker_compose_yml.sh 11301 12301 4 ./config : 4 nodes in 1 machine eg: ./create_docker_compose_yml.sh 11301 12301 16 ./config 2 : 4 nodes in 8 machine, 2 nodes per machine eg: ./create_docker_compose_yml.sh 11301 12301 4 /data/workspace/chainmaker-go/build/config 4 $ ./create_docker_compose_yml.sh 11331 12331 7 ./config 4 $ tree -L 1 鈹溾攢鈹€ config 鈹溾攢鈹€ create_docker_compose_yml.sh 鈹溾攢鈹€ docker-compose1.yml 鈹溾攢鈹€ readme.md 鈹溾攢鈹€ start.sh 鈹溾攢鈹€ stop.sh 鈹斺攢鈹€ tpl_docker-compose_services.yml ``` ### 鍚姩鑺傜偣 ``` $ cd chainmaker-go/scripts/docker/multi_node/ # 鍚姩鑺傜偣 $ docker-compose -f docker-compose1.yml up -d # or $./start.sh docker-compose1.yml ``` ### 鍋滄鑺傜偣 ``` $ cd chainmaker-go/scripts/docker/multi_node/ # 鍋滄鑺傜偣 $ docker-compose -f docker-compose1.yml down # or $./stop.sh docker-compose1.yml ``` ### 鏌ョ湅鑺傜偣鏄惁瀛樺湪 - 鏌ョ湅杩涚▼ ``` $ ps -ef|grep chainmaker | grep -v grep 25261 2146 4 19:55 pts/20 00:00:01 ./chainmaker start -c ../config/wx-org1.chainmaker.org/chainmaker.yml 25286 2146 4 19:55 pts/20 00:00:01 ./chainmaker start -c ../config/wx-org2.chainmaker.org/chainmaker.yml 25309 2146 4 19:55 pts/20 00:00:01 ./chainmaker start -c ../config/wx-org3.chainmaker.org/chainmaker.yml 25335 2146 4 19:55 pts/20 00:00:01 ./chainmaker start -c ../config/wx-org4.chainmaker.org/chainmaker.yml ``` - 鏌ョ湅绔彛 ``` $ netstat -lptn | grep 1230 tcp6 0 0 :::12301 :::* LISTEN 25261/./chainmaker tcp6 0 0 :::12302 :::* LISTEN 25286/./chainmaker tcp6 0 0 :::12303 :::* LISTEN 25309/./chainmaker tcp6 0 0 :::12304 :::* LISTEN 25335/./chainmaker ``` - 鏌ョ湅鏃ュ織 ``` $ cat ../build/release/*/bin/panic.log $ cat ../build/release/*/log/system.log $ cat ../build/release/*/log/system.log |grep "ERROR\|put block\|all necessary" //鑻ョ湅鍒癮ll necessary peers connected鍒欒〃绀鸿妭鐐瑰凡缁忓噯澶囧氨缁€� ``` ### 閮ㄧ讲/璋冪敤鍚堢害楠岃瘉閾炬槸鍚︽甯� 鍚姩鎴愬姛鍚庯紝鍙繘琛岄儴缃�/璋冪敤绀轰緥鍚堢害锛屼互妫€鏌ラ摼鍔熻兘鏄惁姝e父銆傞儴缃插悎绾︾殑浣跨敤鏁欑▼鍙瑙侊細[閮ㄧ讲绀轰緥鍚堢害](./閮ㄧ讲绀轰緥鍚堢害.md)銆�