正常安装
按照NervOS文档进行appchain的搭建,以及测试是没有问题的。
文档参照这里
测试是在docker内执行 curl ,也可以返回测试结果。(相当于在docker内发了一个http post请求)
测试命令:
./env.sh curl -X POST --data ‘{“jsonrpc”:“2.0”,“method”:“peerCount”,“params”:[],“id”:74}’ 127.0.0.1:1337
./env.sh 即为进入docker
更多测试
如果在MacOS本地发送 curl 请求失败,无法返回结果。
测试命令如下:
curl -X POST --data ‘{“jsonrpc”:“2.0”,“method”:“peerCount”,“params”:[],“id”:74}’ 127.0.0.1:1337
经过NervOS开发人员指导后,修改 target/install/env.sh
启动 docker命令增加如下参数:
docker run -d \
-p 1337:1337 \
--network bridge \
--volume ${RELEASE_DIR}:${WORKDIR} \
重新创建docker,并设置节点并启动。
如何重新创建NervOS节点并启动
- 删掉当前的docker
- 删掉当前节点目录
- 创建节点
- 设置节点
- 启动节点
$ docker ps
$ docker rm -f 38955e1182e2 # docker id
$ rm -rf test-chain/
$ ./env.sh ./scripts/create_cita_config.py create --nodes "127.0.0.1:4000,127.0.0.1:4001,127.0.0.1:4002,127.0.0.1:4003"
$ docker ps
$ ./env.sh ./bin/cita setup test-chain/0
$ ./env.sh ./bin/cita setup test-chain/1
$ ./env.sh ./bin/cita setup test-chain/2
$ ./env.sh ./bin/cita setup test-chain/3
$ ./daemon.sh ./bin/cita start test-chain/0
$ ./daemon.sh ./bin/cita start test-chain/1
$ ./daemon.sh ./bin/cita start test-chain/2
$ ./daemon.sh ./bin/cita start test-chain/3
遗留问题
在Mac本地使用Nervos.js sdk去访问docker,仍然有问题。
前提: appchain正常运行,MacOS本地已经映射 1337 端口
如下:
const NervOS = require("@nervos/chain").default
const nerv2 = NervOS(“http://localhost:1337”)
undefined
nerv2.appchain.getBlockNumber()
Promise {
,
所以我理解的是,验证中用的命令(./env.sh curl -X POST --data ‘{“jsonrpc”:“2.0”,“method”:“peerCount”,“params”:[],“id”:74}’ 127.0.0.1:1337
)是发到docker内部执行,即docker自己发给自己的http post请求。
而nervos.js sdk可能需要不同的服务和端口,而这些端口或服务有可能docker通讯存在问题。
所以需要映射更多的端口。
也麻烦帮忙验证一下,多谢 :)