由于EOS的版本在不斷的更新迭代,本地編譯最新版本的方式更新比較繁瑣,而且容易出問題。
因此,我們推薦使用Docker容器的方式配置EOS本地測試環(huán)境,這樣方便維護(hù)升級,而且簡單。 此外,EOS的Docker Image會每天定時更新并被推送到dockerhub,可以直接去拉取官方的最新版本Image使用。
下面的步驟會以Mac系統(tǒng)為例,由于我們使用Docker環(huán)境,理論上不依賴具體的操作系統(tǒng)環(huán)境,只要使用的系統(tǒng)能夠安裝Docker即可。
系統(tǒng)配置要求:
硬盤存儲空間 > 8GB
內(nèi)存 > 4GB
安裝docker和docker-compose
可以到Docker官方網(wǎng)站下載Docker,推薦以下版本:?下載安裝后,啟動Docker服務(wù),不同的系統(tǒng)啟動Docker服務(wù)方式不同,請具體查看啟動方式。 確認(rèn)docker安裝成功并且docker服務(wù)啟動之后,再繼續(xù)進(jìn)行下一步。

不熟悉Docker的同學(xué),可以去查一下Docker的簡單命令介紹,這里我們給出CentOS下面常用的命令:
yum install docker? 安裝服務(wù)systemctl start docker.service 啟動服務(wù)systemctlenabledocker.service 開機(jī)啟動服務(wù)docker pull centos 下載映像到本地docker images centos 查看映像列表docker run -i -t centos /bin/bash 以交互式啟動容器docker run centosecho'Hello World'
其他參考資料:docker 命令
如果使用的是Mac系統(tǒng)版本的Docker,docker-compose會跟隨docker一起被安裝。 如果使用的是CentOS等其他Linux系統(tǒng),需要單獨安裝docker-compose,參考安裝:
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)-o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composedocker-compose --version
推薦的docker-compose版本是:(docker-compose的版本差異影響并不大,安裝新版本即可)
$docker-compose -vdocker-compose version 1.21.2, build a133471
獲得eos的Docker Image
eos的Docker Image 有多種版本,適應(yīng)于不同的應(yīng)用場景:
eosio/builder : 包含編譯eos的所有依賴庫,是eos編譯的一個完整環(huán)境,這樣開發(fā)者就無需安裝各種工具和依賴庫,準(zhǔn)備eos的編譯環(huán)境了。
eosio/eos : 主網(wǎng)節(jié)點使用,比較輕量級,鏡像中不包含編譯智能合約的依賴庫。
eosio/eos-dev : 適用于開發(fā)者的定制環(huán)境,其中包含編譯智能合約需要的相關(guān)工具和依賴庫。
其中eosio/eos 和 eosio/eos-dev 都是繼承了 eosio/builder 然后編譯出來的定制化鏡像。 由于我們是開發(fā)者,因此我們選用eosio/eos-dev 這個Image。 當(dāng)然,如果大家只是想啟動一個節(jié)點,加入主網(wǎng)中,可以直接使用eosio/eos,這個我們在后面會詳細(xì)介紹。
根據(jù)前面的介紹,這里大家可以直接從官方拉取Image:
docker pull eosio/eos-dev:v1.0.8
docker tag eosio/eos-dev:v1.0.8 eosio/eos-dev:latest
此外,也可以自己獲取eos最新代碼之后,在本地使用Dockerfile build出eos-dev Image, 進(jìn)入eos/Docker/dev目錄,執(zhí)行:
docker build.-t eosio/eos-dev:latest
注意
如果不對eos/Docker/dev/Dockerfile 做修改的情況下,使用的事master分支的代碼構(gòu)建的Image
啟動本地節(jié)點的測試環(huán)境
創(chuàng)建volume,供nodeos和keosd掛載使用:
docker volume create --name=local-nodeos-data-volume
docker volume create --name=local-keosd-data-volume
在blockchain/eos/04/docker目錄下,啟動nodeos和keosd:
docker-compose -f docker-compose-local-eosio1.0.yaml up -d
可以查看log日志:
docker logs -f docker_nodeosd_1
得到如下類似日志:?

給cleos命令配置alias
由于我們不希望每次執(zhí)行cleos命令都進(jìn)入docker container中執(zhí)行,因此我們配置了簡短的cleos的alias來代替docker命令:
aliascleos='docker-compose -f docker-compose-local-eosio1.0.yaml exec keosd /opt/eosio/bin/cleos -u http://nodeosd:8888 --wallet-url http://localhost:8900'
(可以將此alias的定義添加到~/.bash_profile 中,這樣每次終端啟動時候都會自動定義alias) 測試cleos命令是否可用:
cleos get info
注意
以后cleos命令的執(zhí)行必須在docker-compose-local-eosio1.0.yaml文件所在目錄才可以。
此時也可以通過http的請求,直接訪問查詢:
curl http://localhost:8888/v1/chain/get_info
分享一個EOS開發(fā)視頻教程,https://www.lanzous.com/b325759/ ?密碼:d55l