【发布时间】:2021-04-06 08:09:38
【问题描述】:
随着 Docker 20.10 的出现,host-gateway 应该可以在 Linux 平台上使用(详见 this 精彩回答)。因此,应该可以创建一个与平台无关的docker-compose 脚本。 (我自己在 Debian 上。)
这里有一些问题和答案的链接,这些链接有助于我走到这一步:here、here 和 here(以及其他一些答案和 cmets)
我正在尝试创建一个用于运行 The Graph 的脚本,其中包括在 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-node 的实例都启动正常,但随后 graph-node 的 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" }))
我使用extra-hosts 错了吗?我可以做些什么来使这个脚本既能在我的 Linux 机器上运行,又能在 Mac 和 Windows 用户上运行?
谢谢!
【问题讨论】:
-
您找到解决该问题的方法了吗?我有同样的问题..
-
@Twixx 很遗憾没有
-
我现在遇到了这个问题。它只是随机开始发生。当我 ssh 进入图形节点泊坞窗时,我可以毫无问题地 ping 到主机,但是一旦我添加端口 8545 以连接到链,我就会被拒绝连接。我在安全帽节点上使用 --hostname 0.0.0.0 选项,所以不确定这里会发生什么......
-
嗯,现在它随机工作了......似乎是安全帽节点上的 --hostname 0.0.0.0 选项修复了它。
标签: linux docker docker-compose localhost