Chainlink 节点无法向 Chainlink 外部适配器发出请求(在本地主机上)

Chainlink node can't make requests to Chainlink external adapter (on localhost)

我有一个 chainlink 节点 运行ning 在端口 6688 上。我 运行 将它与 docker 连接,使用以下命令:

cd ~/.chainlink-rinkeby && docker run -p 6688:6688  \
-v ~/.chainlink-rinkeby:/chainlink  \
-it --env-file=.env \
 smartcontract/chainlink:1.4.0-root local n -p /chainlink/.password -a /chainlink/.api

而且我在端口 8080 上有一个外部适配器 运行ning。

如果我请求它 { "id": 0, "data":{ "columns": ["blood","heath"], "linesAmount":500 } } 它 returns 我是一个正确的负载,采用外部适配器所期望的格式:

{
    "jobRunID": 0,
    "data": {
        "ipfsHash": "anIpfshashShouldBeHere",
        "providers": [
            "0x03996eF07f84fEEe9f1dc18B255A8c01A4986701"
        ],
        "result": "anIpfshashShouldBeHere"
    },
    "result": "anIpfshashShouldBeHere",
    "statusCode": 200
}

问题是,在 chainlink 节点中,特别是在 fetch 方法中,它给我一个错误: error making http request: Post "http://localhost:8080": dial tcp 127.0.0.1:8080: connect: connection refused

是否与docker容器有关?我不明白为什么它不能从同一台机器的另一个端口请求资源。我可能缺少一些配置吗? 根据我从文档中读到的内容,可以在本地 运行 适配器。 下面是一张包含更多信息的图片:

如果您的外部适配器 (EA) 在 http://localhost:8080 上 运行,并且您正在尝试从 Docker 内的 Chainlink 节点 运行 访问该 EA ,那么你就不能使用 localhost,你需要离开 Docker 容器并进入主机 运行 Docker 引擎(你的 Windows 或Mac 机)。

要这样做,请定义要使用的网桥 http://host.docker.internal:8080

可以在 Docker Docs 中找到更多详细信息。