eos docker執行後無法執行cleos

鳳梨豪發表於2018-05-23

雖然eos給了安裝教程,當然還是用docker最方便。而且現在docker還有阿里雲映象,速度快的不要不要的。

官方教程了https://github.com/EOSIO/eos/…,不過只是想執行的話,也不用build,直接在原始碼的Docker目錄下執行:

$ docker-compose up

就好了,會自動啟動兩個容器:

  1. keosd 錢包管理元件,負責簽名啊啥的
  2. nodeosd 區塊鏈節點

eos更新很快,教程更新不及時,截至今天(2018-5-23),教程裡cleos(命令列工具)的配置是有問題的。

Long version

# 有問題!
$ alias cleos=`docker-compose exec keosd /opt/eos/bin/cleos -H nodeos`

首先你可能遇到命令不存在,因為路徑變過了,當前是/opt/eosio/bin/cleos。即便是改變了路徑,發現還是會報錯:

Host and port options (-H, --wallet-host, etc.) have been replaced with -u/--url and --wallet-url
Use for example -u http://localhost:8888 or --url https://example.invalid/

錯誤也說明了原因。
重新配置下發現還是報錯:

# 還是有問題!
$ alias cleos=`docker-compose exec keosd /opt/eosio/bin/cleos -u http://localhost:8888/`

$ cleos get info
Error 3130001: Missing Chain API Plugin
Ensure that you have eosio::chain_api_plugin added to your node`s configuration!
Error Details:
Chain API plugin is not enabled

這錯報的真是驚天地泣鬼神,按照提示你死活是搞不對的,因為預設Chain API Plugin是開啟的。

其實是本來就不該連localhost,要連到鏈上去。
修改為:

$ alias cleos=`docker-compose exec keosd /opt/eosio/bin/cleos -u http://nodeosd:8888/ --wallet-url http://localhost:8888`

$ cleos get info

{
  "server_version": "4e99cf47",
  "head_block_num": 1975,
  "last_irreversible_block_num": 1974,
  "last_irreversible_block_id": "000007b6d7f08fed622ffbf03d516e70d05d6f731cd3157cf5b0215182e0a3aa",
  "head_block_id": "000007b77d87993ec68eaaa3cf3752433e7a012aeffb41f9d65c2ddda5fe195c",
  "head_block_time": "2018-05-23T08:07:40",
  "head_block_producer": "eosio",
  "virtual_block_cpu_limit": 717591,
  "virtual_block_net_limit": 7553528,
  "block_cpu_limit": 99900,
  "block_net_limit": 1048576
}

好了,終於可以愉快的使用cleos了。

Short Version

$ alias cleos=`docker-compose exec keosd /opt/eosio/bin/cleos -u http://nodeosd:8888/ --wallet-url http://localhost:8888`

cleos即可正常使用。

相關文章