Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用docker设置tendermint测试网,并在abci和tendermint core之间建立通信_Docker_Docker Compose_Blockchain_Tendermint - Fatal编程技术网

使用docker设置tendermint测试网,并在abci和tendermint core之间建立通信

使用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

我正在尝试将我自己的ABCI应用程序与localnet集成。码头工人看起来像

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,并尝试连接到上ABCI端口的公开端口时ode>abci(26658)在docker容器中,我仍然收到连接被拒绝的错误。关于初始化目录,我的意思是你已经设置了一个Tendermint主目录(使用
Tendermint init
)。我假设当你在本地运行所有内容时(没有docker或docker compose)您在
~/.tendermint
有一个文件夹,其中包含您的配置。停靠的tendermint
node0
也需要配置。我不熟悉您正在使用的TM映像,因此您可能不需要。您可以尝试使用停靠文件,但从每个服务中删除
网络:
部分吗?这将强制取消停靠ocker compose创建一个默认网络。我为我的abci应用程序编写了一个docker文件,当我运行
docker build时,它运行得很好。
,但没有运行
docker compose
。另外,我还没有单独停靠tendermint节点。你知道怎么做吗?现在,我只使用
tendermint/localnode
I从
docker compose.yml
文件生成的图像。