Docker构建镜像时yarn安装依赖遇getaddrinfo EAI_AGAIN错误求助
Docker构建镜像时yarn install网络错误解决方案
问题分析
错误getaddrinfo EAI_AGAIN registry.yarnpkg.com是容器构建阶段DNS解析失败,无法访问npm仓库域名导致的,常见于Docker网络配置异常或镜像源问题。
解决方案
1. 调整Docker Desktop网络DNS设置
- 打开Docker Desktop,进入 Settings → Resources → Network
- 勾选"Enable DNS server",并手动设置DNS服务器为
8.8.8.8(谷歌公共DNS)或114.114.114.114(国内公共DNS) - 点击"Apply & Restart"重启Docker Desktop
2. 优化Dockerfile配置(更换国内源)
修改Dockerfile,更换Alpine系统源和npm镜像源,同时优化构建缓存:
# syntax=docker/dockerfile:1 FROM node:18-alpine # 替换Alpine国内源,解决系统包下载问题 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories WORKDIR /app # 优先复制依赖配置文件,利用Docker构建缓存 COPY package.json yarn.lock ./ # 设置国内npm镜像源(npmmirror为淘宝镜像新域名) RUN yarn config set registry https://registry.npmmirror.com/ && yarn install --production # 最后复制项目代码 COPY . . CMD ["node", "src/index.js"] EXPOSE 3000
3. 验证容器网络连通性
执行以下命令启动临时容器,测试DNS和网络连通性:
docker run -it --rm alpine ping registry.npmmirror.com
- 如果ping不通,说明Docker网络配置仍有问题,回到步骤1重新调整DNS
- 如果能正常ping通,再执行
docker build -t getting-started .重新构建镜像
4. 检查Windows代理设置
- 若Windows开启了代理,进入Docker Desktop Settings → Resources → Proxies
- 选择"Use system proxy"同步系统代理设置,或手动填写代理信息;若无需代理,直接选择"No proxy"
- 重启Docker后重新构建
内容的提问来源于stack exchange,提问作者Sun
相关产品推荐
相关产品推荐

