Linux上的docker compose“主机网关”无法连接到RPC(v20.10.1)
随着DockerLinux上的docker compose“主机网关”无法连接到RPC(v20.10.1),linux,docker,docker-compose,localhost,Linux,Docker,Docker Compose,Localhost,随着Docker20.10的出现,主机网关应该可以在Linux平台上使用(如精彩答案中所述)。因此,应该可以创建平台无关的docker compose脚本。(我自己也在Debian上。) 以下是一些有助于我走到这一步的问题和答案的链接:,和(以及其他一些答案和评论) 我正在尝试创建一个运行脚本,包括在Docker容器内运行ipfs和postgres,并连接到Docker外部的区块链实例(在端口8545上)。以下是脚本: version: '3' services: graph-node:
20.10
的出现,主机网关
应该可以在Linux平台上使用(如精彩答案中所述)。因此,应该可以创建平台无关的docker compose
脚本。(我自己也在Debian上。)
以下是一些有助于我走到这一步的问题和答案的链接:,和(以及其他一些答案和评论)
我正在尝试创建一个运行脚本,包括在Docker容器内运行ipfs
和postgres
,并连接到Docker外部的区块链实例(在端口8545上)。以下是脚本:
version: '3'
services:
graph-node:
extra_hosts:
- "host.docker.internal:host-gateway"
image: graphprotocol/graph-node
ports:
- '8000:8000'
- '8001:8001'
- '8020:8020'
- '8030:8030'
- '8040:8040'
depends_on:
- ipfs
- postgres
environment:
postgres_host: postgres
postgres_user: graph-node
postgres_pass: let-me-in
postgres_db: graph-node
ipfs: 'ipfs:5001'
ethereum: 'localhost:http://host.docker.internal:8545'
RUST_LOG: info
ipfs:
image: ipfs/go-ipfs:v0.4.23
ports:
- '5001:5001'
volumes:
- ./data/ipfs:/data/ipfs
postgres:
image: postgres
ports:
- '5432:5432'
command: ["postgres", "-cshared_preload_libraries=pg_stat_statements"]
environment:
POSTGRES_USER: graph-node
POSTGRES_PASSWORD: let-me-in
POSTGRES_DB: graph-node
volumes:
- ./data/postgres:/var/lib/postgresql/data
Docker启动正常,ipfs
、postgres
和graph节点的实例都启动正常,但是graph节点的RPC调用(到区块链)都失败,出现类似以下错误:
WARN Trying again after eth_getBlockByNumber(0, false) RPC call failed (attempt #18) with result Err(Transport error: Error(Connect, Os { code: 111, kind: ConnectionRefused, message: "Connection refused" }))
我是否使用了额外主机
错误?我能做些什么使这个脚本既能在我的Linux机器上工作,又能在Mac和Windows用户上工作
谢谢 主机上运行的应用程序可能绑定到与Docker使用的接口不同的接口
您可以使用netstat
进行检查:
$ netstat -pan | grep 8545
tcp6 0 0 127.0.0.1:8545 :::* LISTEN 496150/java
如果它正在监听127.0.0.1
,如本例所示,这意味着它只能通过环回接口访问
解决方案是找出主机网关指向的IP地址,并确保服务绑定到该IP地址,而不是127.0.0.1
如果该服务在所有接口上都可用(例如,包括您的wifi网络)时没有问题,您可以绑定到0.0.0
,使其在所有接口上都可用。您找到解决该问题的方法了吗?我也有同样的问题。@Twixx不幸的是,我现在遇到了这个问题。它只是随机开始发生。当我ssh进入graph node docker时,我可以ping进入主机没有问题,但只要我添加端口8545以连接到链,我就得到了连接拒绝。我在hardhat节点上使用--hostname 0.0.0.0选项,所以不确定这里会发生什么…嗯,现在它可以随机工作了。。。似乎是这个--hostname 0.0.0.0选项在hardhat节点上修复了它。