LoginSignup
0
0

More than 1 year has passed since last update.

Docker build 中に npm install で EAI_AGAIN 発生の解決策

Posted at

WSL2 上で docker build したときに、npm installEAI_AGAIN で失敗することがある。

Sending build context to Docker daemon  16.38kB
Step 1/7 : FROM node:18.9.0-alpine3.15
 ---> ec9347a9b50f
Step 2/7 : WORKDIR /app
 ---> Using cache
 ---> 4f9b5895a691
Step 3/7 : COPY package.json ./
 ---> 2976c381a263
Step 4/7 : RUN npm i -g npm@9.1.1 &&     npm i
 ---> Running in be3cca06d4f5
npm ERR! code EAI_AGAIN
npm ERR! syscall getaddrinfo
npm ERR! errno EAI_AGAIN
npm ERR! request to https://registry.npmjs.org/npm 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/2023-02-16T00_38_46_463Z-debug-0.log
The command '/bin/sh -c npm i -g npm@9.1.1 &&     npm i' returned a non-zero code: 1

きっかけはよくわからないが、Windows アップデートで PC 再起動された翌日から発生するようになった。
Windows アップデートそのものは関係ないが、おそらくWSL再起動、Docker デーモン再起動が行われたことに起因しているものと考えられる。

原因と解決策

なにやら Docker が DNS 解決できないゆえに発生しているらしい。そのため、docker build 時に --network== オプションを付けることで回避できた。

利用可能なネットワーク確認

docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
ea8f55babc5d   bridge    bridge    local
6dbe0f879255   host      host      local
4b0be39c3e3a   none      null      local

networkオプションを指定してビルド

docker build --network=host . --tag app:v1

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0