You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Hasura Docker容器无法访问本地机器运行的API服务端口

Hasura容器无法访问本地API问题解决步骤

1. 修改本地API的监听配置

你当前的express服务默认只监听本地回环地址127.0.0.1,Docker容器无法直接访问,需要修改监听地址为所有网卡:

// 将原listen代码替换为以下内容
app.listen(process.env.PORT || 5000, '0.0.0.0', () => {
    console.log('App is ready running');
})

同时你的API只配置了urlencoded格式的请求解析,Hasura触发器发送的是JSON格式请求,需要补充JSON解析中间件:

// 放在所有路由定义之前
app.use(bodyParser.json())

2. 适配Docker宿主机访问规则

不同操作系统的Docker对host.docker.internal的支持规则不同:

  • Windows/macOS:新版Docker默认支持该地址解析,若仍无法访问,启动容器时添加参数--add-host=host.docker.internal:host-gateway即可
  • Linux:Docker默认无该地址映射,启动Hasura容器时必须添加上述参数,若使用docker-compose部署,在Hasura服务配置下添加以下内容:
extra_hosts:
  - "host.docker.internal:host-gateway"

3. 连通性验证

修改配置后进入Hasura容器执行测试命令,验证连通性:

docker exec -it <替换为你的Hasura容器ID/名称> curl http://host.docker.internal:5000/notify -X POST -H "Content-Type: application/json" -d '{"test":1}'

正常会返回你定义的JSON响应,说明连通性正常,触发器即可正常调用。

内容的提问来源于stack exchange,提问作者geraktOfRivia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:45:02