LoginSignup
3
2

More than 3 years have passed since last update.

yarn install に失敗する "getaddrinfo EAI_AGAIN registry.yarnpkg.com"

Posted at

本記事は Docker Toolbox を対象としています。Docker for Windows は対象外

Docker が build できない

webアプリ開発のためテストサーバを docker 上にビルドしようとしたら失敗した。

Step 10/11 : RUN cd app && yarn install
 ---> Running in d36ecd97329b
yarn install v1.22.4
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz: getaddrinfo EAI_AGAIN registry.yarnpkg.com".

以下が問題のファイル

Dcokerfile
FROM node:12.16-slim

ENV APP_DIR=/app
WORKDIR ${APP_DIR}
RUN mkdir -p ${APP_DIR}
COPY . ${APP_DIR}

ENV LANG=C.UTF-8
ENV TZ=Asia/Tokyo
ENV NODE_ENV=development
ENV HOST 0.0.0.0

RUN cd app && yarn install

EXPOSE 3000

環境

  • Windows 10 Home 64bit
  • Docker version 19.03.1

Windows 10 Home では Hyper-V が使用できないため DockerToolbox 経由でインストール

原因

registry.yarnpkg.com の名前解決ができないのは直ぐに分かる。しかし何故?普通にコマンドラインから nslookup できるぞ?と思ったら VirtualBox 側の DNS に問題があるようだ。Linux カーネルを用意するため OS とコンテナの間に挟まっており、意外と問題を見落としやすい。VirtualBox 上で叩くと、

dcoker@default:~$ nslookup registry.yarnpkg.com
Server:    10.0.2.3
Address 1: 10.0.2.3
nslookup: can't resolve 'registry.yarnpkg.com'

解決手法

手っ取り早く DNS サーバに8.8.8.8をセカンダリーに追加する。

dcoker@default:~$ sudo -i
root@default:~# vi /etc/resolv.conf

DNS設定【resolv.conf 】再起動後の上書きを無効化する

/etc/resolv.conf
  nameserver 10.0.2.3
+ nameserver 8.8.8.8

8.8.8.8 は Google Public DNS のアドレスで、DNSで困った時の頼もしい味方。
キーボード配列の違いでコロン:が打てず vi 終了できない!そんなJIS配列ユーザのあなたは'+' (Shift + ';')を押下しましょう。

[Qiita] JISキーボードなのにUS配列の環境で文字を打つ

これは応急処置なので、VirtualBox を再起動すると元に戻るなど恒久的な解決にはならないので注意。

3
2
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
3
2