項目地址:https://github.com/tabalt/doc...,歡迎Star和參與完善。node
本項目旨在創建基於Docker部署的生產環境使用的Ethereum私鏈集羣,在儘量簡化使用的前提下保留足夠的靈活性,方便業務快速組建區塊鏈私有網絡集羣,並基於此開發私有區塊鏈平臺應用。git
因用到了「多階段鏡像構建」的特性,須要Docker 17.05 以上的版本 編譯鏡像。github
咱們的Docker鏡像作到了開箱即用,但爲了能讓業務使用特有的配置,咱們提供了一些環境變量,可在啓動容器時指定並修改默認值。支持的環境變量以下表所列:docker
變量名 | 默認值 | 說明 |
---|---|---|
HOSTNAME | localhost |
容器的主機名 |
ETHEREUM_HOME | /usr/local/ethereum |
集羣根目錄 |
ETHEREUM_DATADIR | ${ETHEREUM_HOME}/data |
集羣數據目錄 |
ETHEREUM_GENESIS_JSON | ${ETHEREUM_DATADIR}/genesis.json |
初始化文件路徑 |
ETHEREUM_BOOTNODE_KEY | ${ETHEREUM_DATADIR}/bootnode.key |
啓動節點的key文件路徑 |
ETHEREUM_NODE_DATADIR | ${ETHEREUM_DATADIR}/nodes/${HOSTNAME} |
節點數據目錄 |
ETHEREUM_NODE_INITFLAG | ${ETHEREUM_NODE_DATADIR}/init.SUCCESS |
節點初始化標誌文件 |
ETHEREUM_NODE_ROLE | mine |
節點角色 |
啓動節點是用來幫助網絡中其餘節點發現彼此進而鏈接彼此的引導節點,容器中啓動的是專用的bootnode
程序,經過 ETHEREUM_BOOTNODE_KEY
環境變量指定啓動時所需的key文件。json
因bootnode是高性能輕量級的程序,通常啓動一個bootnode角色的容器便可。網絡
顧名思義,挖礦節點是用來實際挖礦產生區塊並記錄數據到區塊鏈上的節點,容器中啓動的是geth
程序,一般須要跨多個機房部署4個以上挖礦節點組成集羣。架構
啓動時須指定 --networkid 、--etherbase、--bootnodes 等命令參數。性能
接口節點是用來處理業務方接口請求的節點,接口節點和挖礦節點互相連接,容器中啓動的是geth
程序,一般須要在與調用業務方相同的機房部署多個挖礦節點組成集羣。接口節點和挖礦節點拆分開是爲了提升接口吞吐量和避免和挖礦節點互相干擾。區塊鏈
啓動時須指定和挖礦節點相同的 --networkid 、--bootnodes 等命令參數。測試
項目代碼中data目錄有僅供測試的配置文件,如 bootnode.key 和 genesis.json,可自行修改後再作編譯,
也可掛載有自定義配置的共享存儲到容器內的/usr/local/ethereum/data
目錄 覆蓋配置文件
項目地址:https://github.com/tabalt/doc...,歡迎Star和參與完善。