【问题标题】:docker-compose throws error with getaddrinfo EAI_AGAIN registry.npmjs.orgdocker-compose 使用 getaddrinfo EAI_AGAIN registry.npmjs.org 引发错误
【发布时间】:2021-08-29 14:16:37
【问题描述】:

背景:

我使用的是 Ubuntu 20.04。 我正在尝试使用 docker-compose 构建图像。

这是我的docker-compose 文件

version: "3.8"

services:     
    web:
        build: ./frontend
        network_mode: "host"
        ports: 
            - 3000:3000
    api:
        build: ./backend
        network_mode: "host"
        ports: 
            - 3001:3001
        environment: 
            DB_URL: mongodb://db/foo-app
    db:
        image: mongo:4.0-xenial
        ports: 
            - 27017:27017
        volumes:
            - foo-app-data:/data/db

volumes:
    foo-app-data: 

以下是我的两个Dockerfile 文件:

# ./backend file

FROM node:16.3.0-alpine3.13

RUN addgroup app && adduser -S -G app app
WORKDIR /app

USER root
COPY package*.json ./

# --- debug try
RUN npm cache clean --force
RUN npm config set registry https://registry.npmjs.org/
RUN npm install -g @angular/cli
# ---

RUN npm install
COPY . . 
RUN chown app:app /app
USER app

EXPOSE 3001 

CMD ["npm", "start"]
# ./frontend file

FROM node:16.3.0-alpine3.13

RUN addgroup app && adduser -S -G app app
WORKDIR /app

USER root
COPY package*.json ./

# --- debug try
RUN npm cache clean --force
RUN npm config set registry https://registry.npmjs.org/
# ---

RUN npm install
COPY . .
RUN chown app:app /app
USER app

EXPOSE 3000 

CMD ["npm", "start"]

错误:

当我运行docker-compose build 时,会抛出以下错误:

Step 8/14 : RUN npm install -g @angular/cli
 ---> Running in ce221adb18f6
npm ERR! code EAI_AGAIN
npm ERR! syscall getaddrinfo
npm ERR! errno EAI_AGAIN
npm ERR! request to https://registry.npmjs.org/@angular%2fcli failed, reason: getaddrinfo EAI_AGAIN registry.npmjs.org

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-06-13T10_19_13_600Z-debug.log
The command '/bin/sh -c npm install -g @angular/cli' returned a non-zero code: 1
ERROR: Service 'web' failed to build : Build failed

到目前为止我所尝试的:

当我手动构建每个 docker 文件时,我遇到了同样的错误,直到我使用了 --network=host。这意味着,当我使用docker build --network=host 构建图像时,它可以正常工作。所以我尝试将network_mode= "host" 添加到我的 docker-compose 文件中,但它并没有解决问题。

看在上帝的份上,在将此问题标记为重复之前阅读此内容:

  1. 这篇帖子here 提出了针对 docker 而不是 docker compose 的解决方案。当我ping registry.npmjs.org 时,连接正常。
  2. 这篇帖子here 向docker-compose up 提出建议,这将引发与我在这里完全相同的错误。
  3. 这篇文章here 不起作用,我已经多次重新启动 docker。最重要的是,我会在抛出错误后清理所有 docker 映像,以确保下次构建时不会使用缓存中的任何内容。
  4. 这个帖子here 也不起作用。我尝试 (1) 从 npm 配置中删除代理,并在我的 Dockerfile 中添加额外的行 npm cache clean --force 和 npm config set registry https://registry.npmjs.org/。没有任何效果。
  5. 这个帖子here不仅没有解决问题,而且也没有很好地解释提出解决方案的原因。
  6. 这篇帖子here 我什至不知道 StackOverflow 上如何允许这个答案。

【问题讨论】:

    标签: node.js docker npm docker-compose


    【解决方案1】:

    如果您使用 network_mode 和 host 值,则不能将其与端口映射混合使用:https://docs.docker.com/compose/compose-file/compose-file-v3/#ports

    然后,或者您将 network_mode 更改为桥接,或者您删除每个服务的端口映射。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-23
      • 2019-11-02
      • 1970-01-01
      • 2017-01-28
      • 2019-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多