eos docker运行后无法执行cleos

fearlessxjdx 2019-06-27

虽然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即可正常使用。

相关推荐