使用docker设置tendermint测试网,并在abci和tendermint core之间建立通信
我正在尝试将我自己的ABCI应用程序与localnet集成。码头工人看起来像使用docker设置tendermint测试网,并在abci和tendermint core之间建立通信,docker,docker-compose,blockchain,tendermint,Docker,Docker Compose,Blockchain,Tendermint,我正在尝试将我自己的ABCI应用程序与localnet集成。码头工人看起来像 version: '3' services: node0: container_name: node0 image: "tendermint/localnode" ports: - "26656-26657:26656-26657" environment: - ID=0 - LOG=${LOG:-tendermint.log} volu
version: '3'
services:
node0:
container_name: node0
image: "tendermint/localnode"
ports:
- "26656-26657:26656-26657"
environment:
- ID=0
- LOG=${LOG:-tendermint.log}
volumes:
- ./build:/tendermint:Z
command: node --proxy_app=tcp://abci0:26658
networks:
localnet:
ipv4_address: 192.167.10.2
abci0:
container_name: abci0
image: "abci-image"
volumes:
- $GOPATH/src/samplePOC:/go/src/samplePOC
ports:
- "26658:26658"
build:
context: .
dockerfile: $GOPATH/src/samplePOC/Dockerfile
command: /go/src/samplePOC/samplePOC
networks:
localnet:
ipv4_address: 192.167.10.6
节点和abci容器都已成功构建。ABCI服务器已成功启动,节点正在尝试建立连接。然而,主要的问题是,我看到这两个人不能相互沟通
我得到以下错误:
node0 | E[2019-10-29 | 15:14:28.525]abci.socketClient无法连接
到tcp://abci0:26658. 重试。。。模块=abci客户端连接=查询
err=“拨打tcp 192.167.10.6:26658:连接:连接被拒绝”
有人能帮我吗?我的第一个想法是,您可能需要在
节点0
中添加一个依赖项:[“abci0”]
,因为在Tendermint尝试连接之前,ABCI应用程序必须正在侦听
当然,TM应该继续重试,因此这可能不是问题所在
您可以尝试的另一件事是在主机上运行tendermint,并尝试连接到abci0
(26658)上的ABCI端口的暴露端口,以将问题隔离到docker配置
如果您无法运行tendermint节点--proxy\u应用程序=tcp://localhost:26658
问题可能出在您的ABCI应用程序中
我假设您已经在装入
node0
?的卷中初始化了一个目录,这是我从Tendermint获得的
版本:“3.4”
服务:
kvstore应用程序:
图片:阿尔卑斯山
揭露:
- "26658"
卷数:
-./kvstore示例:/home/dev/kvstore示例
命令:“/home/dev/kvstore示例——套接字地址tcp://kvstore-app:26658"
tendermint节点:
图片:嫩薄荷/嫩薄荷
取决于:
-kvstore应用程序
端口:
- "26657:26657"
环境:
-TMHOME=/tmp/tendermint
卷数:
-/tmp/tendermint:/tmp/tendermint
命令:node--proxy_应用程序=tcp://kvstore-app:26658
我不太清楚为什么您的docker compose.yml
无法工作,但很可能您没有以节点可以访问的方式绑定abci应用程序的套接字。我显式地告诉abci应用程序使用参数--socket addr这样做tcp://kvstore-app:26658“
。此外,我只是在docker网络上公开abci应用程序的端口,但我认为映射端口应该隐式地实现这一点
另外,我会清除所有的网络内容。就我个人而言,只有在我有一些非常具体的网络目标时,我才会使用网络配置。首先,thnx用于您的响应。当我只使用本地主机时,tendermint和abci相互连接。只有docker在更改
tendermint节点时出现问题--代理应用程序=tcp://localhost:26658
在docker compose.yml
文件中,我仍然得到相同的输出。我不太理解你关于初始化卷中node0
目录的最后一个问题。你能再详细说明一下吗?当我尝试在本地主机上运行tendermint,并尝试连接到Tendermint init
)。我假设当你在本地运行所有内容时(没有docker或docker compose)您在~/.tendermint
有一个文件夹,其中包含您的配置。停靠的tendermintnode0
也需要配置。我不熟悉您正在使用的TM映像,因此您可能不需要。您可以尝试使用停靠文件,但从每个服务中删除网络:
部分吗?这将强制取消停靠ocker compose创建一个默认网络。我为我的abci应用程序编写了一个docker文件,当我运行docker build时,它运行得很好。
,但没有运行docker compose
。另外,我还没有单独停靠tendermint节点。你知道怎么做吗?现在,我只使用tendermint/localnode
I从docker compose.yml
文件生成的图像。