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

Node.js应用Docker化时yarn安装依赖遇DNS解析错误求助

解决Docker构建Node.js应用时Yarn安装依赖失败问题

问题现象

将Node.js应用容器化时,本地执行yarn install一切正常,但通过docker-compose up构建镜像时,执行yarn命令报错,无法解析Yarn仓库地址,具体错误信息如下:

=> ERROR [4/5] RUN yarn                                                                       21.3s
------
 > [4/5] RUN yarn:
#0 0.772 yarn install v1.22.19
#0 0.887 [1/4] Resolving packages...
#0 1.074 [2/4] Fetching packages...
#0 6.223 error An unexpected error occurred: "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz: getaddrinfo EAI_AGAIN registry.yarnpkg.com".
#0 6.223 info If you think this is a bug, please open a bug report with the information provided in "/usr/app/yarn-error.log".
#0 6.223 info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
------
failed to solve: executor failed running [/bin/sh -c yarn]: exit code: 1

已尝试操作

  • 移除项目中不必要的依赖包
  • 清理本地Node缓存
  • 删除本地node_modules文件夹并重新安装(本地运行无异常)

相关配置文件

Dockerfile

FROM node:16-alpine

WORKDIR /usr/app
COPY package.json yarn.lock ./

RUN yarn

COPY . .

EXPOSE 3000
CMD ["yarn", "start"]

docker-compose.yml

version: '1'

services:
  app:
    container_name: nodejs-backend
    build: .
    ports:
      - "3000:3000"
    command: yarn start

.dockerignore

node_modules

解决方案

报错getaddrinfo EAI_AGAIN本质是DNS解析失败,可通过以下方法解决:

  1. 为容器配置公共DNS服务器
    在docker-compose.yml的服务配置中添加DNS参数,指定稳定的公共DNS:

    version: '1'
    
    services:
      app:
        container_name: nodejs-backend
        build: .
        ports:
          - "3000:3000"
        command: yarn start
        dns:
          - 8.8.8.8
          - 8.8.4.4
    
  2. 切换Yarn镜像源为国内源
    针对Alpine镜像访问海外仓库慢的问题,在Dockerfile中配置国内Yarn镜像:

    FROM node:16-alpine
    
    WORKDIR /usr/app
    COPY package.json yarn.lock ./
    
    # 配置国内Yarn镜像
    RUN yarn config set registry https://registry.npmmirror.com/
    RUN yarn
    
    COPY . .
    
    EXPOSE 3000
    CMD ["yarn", "start"]
    
  3. 重启Docker服务
    Docker网络组件异常可能导致DNS解析问题,重启Docker即可修复:

    # Linux系统
    sudo systemctl restart docker
    
    # Windows/macOS
    在Docker Desktop界面点击重启按钮
    
  4. 检查宿主机网络连通性
    先确认宿主机能正常访问Yarn仓库,执行以下命令验证:

    ping registry.yarnpkg.com
    

    如果宿主机也无法访问,需先排查宿主机的网络连接问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:25:23