Docker内执行yarn install失败但外部正常,请求解决网络超时问题
Docker内执行yarn install失败但外部正常,请求解决网络超时问题
看起来你在Docker容器里跑yarn install时踩了网络超时的坑——外部环境明明一切正常,容器里却一直报「网络连接有问题,正在重试」,最后直接抛出ESOCKETTIMEDOUT错误,哪怕加了--network-timeout 240000参数也没好转对吧?我给你几个实战中管用的排查和解决思路:
先排查容器基础网络连通性
别着急直接跑yarn,先在容器里测试下能不能正常访问Yarn的官方源:ping registry.yarnpkg.com curl -I https://registry.yarnpkg.com如果ping不通或者curl返回失败,大概率是容器的DNS解析或网络模式出了问题。可以试试启动容器时手动指定公共DNS服务器:
docker run --dns 8.8.8.8 --dns 8.8.4.4 [你的容器镜像/启动命令]切换到国内镜像源提升稳定性
官方源在容器环境下的访问稳定性可能较差,换成国内镜像源往往能解决超时问题:
先在容器里执行命令切换源:yarn config set registry https://registry.npmmirror.com/之后再重新执行安装命令:
yarn install --network-timeout 240000同步代理配置到容器环境
如果你本地宿主机是通过代理上网的,容器默认不会继承代理设置,需要手动传递代理环境变量(替换成你实际的代理地址):docker run \ -e HTTP_PROXY=http://你的代理IP:端口 \ -e HTTPS_PROXY=http://你的代理IP:端口 \ -e NO_PROXY=localhost,127.0.0.1,registry.npmmirror.com \ [你的容器镜像/启动命令]调整容器MTU值适配网络环境
部分网络环境中,Docker默认的MTU(最大传输单元)和宿主机不匹配,会导致大数据包传输超时。可以尝试减小容器的MTU值:docker run --mtu 1400 [你的容器镜像/启动命令]这个值可以根据宿主机的MTU调整(通常宿主机MTU为1500时,容器设1400即可)。
检查容器网络权限限制
确认容器没有被限制网络访问:比如是否使用了--network none完全禁用网络的模式,或者宿主机的防火墙/安全组有没有拦截容器向registry.yarnpkg.com的443端口发起的出站请求。
备注:内容来源于stack exchange,提问作者Shristi_Mhj
相关产品推荐
相关产品推荐

