好几次想在自己的小主机上用docke方式部署uptime kuma来检测自己部署的几个服务的可用状态,但几乎每次都碰到同一个问题:getaddrinfo EAI_AGAIN

网上也搜了好久的错误原因和解决方案,有得说网络问题,有的说dns解析问题。我也在项目的github仓库查看了大量的类似issues,但都没有找到有用的解决方案。

我觉得可能是我检测的几个服务都是套了cloudflare tunnel的缘故,但实测检测baidu.com这个域名也会报同样的错误。

因为一直没有debug的思路,所以我就放弃了uptime kuma。

但是今天写这篇文章,就是因为我知道这个报错的原因了!

先说一下我的部署方式:x86_64平台的debian,防火墙ufw,docker-compose方式部署,network_mode方式是默认的bridge。

出现getaddrinfo EAI_AGAIN的原因就是docker默认部署的应用都是network_mode:bridge,改成host模式就没问题了。

不过有一点要注意,network_mode改成host模式以后就不支持端口映射了,默认是3001端口,如果装了防火墙的话记得放行端口号。