Docker无法安装npm包

kkih6yb8  于 12个月前  发布在  Docker
关注(0)|答案(6)|浏览(203)

我在Ubuntu服务器上运行Docker。
这似乎是一个docker问题。从ubuntu安装package.json工作正常。

npm http request GET https://registry.npmjs.org/express
npm info retry will retry, error on last attempt: Error: getaddrinfo EAI_AGAIN registry.npmjs.org:443

字符串
似乎npm注册表无法访问。有什么想法吗?
Ping工作正常!

Dockerfile:

FROM node:4-slim

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY package.json /usr/src/app/

RUN npm install

COPY . /usr/src/app

EXPOSE 3000

CMD [ "node", "server.js" ]

构建日志:

Sending build context to Docker daemon  66.05kB
Step 1/8 : FROM node:4-slim
 ---> cd692e27dc7f
Step 2/8 : RUN mkdir -p /usr/src/app
 ---> Running in 876d5978bdd7
 ---> 4bab541344aa
Removing intermediate container 876d5978bdd7
Step 3/8 : WORKDIR /usr/src/app
 ---> d66516529b5e
Removing intermediate container 6317ee72e20e
Step 4/8 : COPY package.json /usr/src/app/
 ---> 70483f422380
Removing intermediate container c3781f622ce4
Step 5/8 : RUN npm install
 ---> Running in 37d8afdf1c21
npm info it worked if it ends with ok
npm info using [email protected]
npm info using [email protected]
npm WARN package.json [email protected] No description
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No README data
npm info preinstall [email protected]
npm info attempt registry request try #1 at 10:58:13 AM
npm http request GET https://registry.npmjs.org/express
npm info attempt registry request try #1 at 10:58:13 AM
npm http request GET https://registry.npmjs.org/mongoose
npm info retry will retry, error on last attempt: Error: getaddrinfo EAI_AGAIN registry.npmjs.org:443
npm info retry will retry, error on last attempt: Error: getaddrinfo EAI_AGAIN registry.npmjs.org:443
npm info attempt registry request try #2 at 10:59:04 AM
npm http request GET https://registry.npmjs.org/mongoose
npm info attempt registry request try #2 at 10:59:04 AM
npm http request GET https://registry.npmjs.org/express
npm info retry will retry, error on last attempt: Error: getaddrinfo EAI_AGAIN registry.npmjs.org:443
npm info retry will retry, error on last attempt: Error: getaddrinfo EAI_AGAIN registry.npmjs.org:443
npm info attempt registry request try #3 at 11:00:44 AM
npm http request GET https://registry.npmjs.org/mongoose
npm info attempt registry request try #3 at 11:00:44 AM
npm http request GET https://registry.npmjs.org/express
npm ERR! Linux 4.4.0-78-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v4.8.3
npm ERR! npm  v2.15.11
npm ERR! code EAI_AGAIN
npm ERR! errno EAI_AGAIN
npm ERR! syscall getaddrinfo

npm ERR! getaddrinfo EAI_AGAIN registry.npmjs.org:443
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:
npm ERR!     /usr/src/app/npm-debug.log

wnrlj8wa

wnrlj8wa1#

这也是我在Docker for Windows和GitLab Windows runner上遇到的一个问题。问题是docker run网络工作正常,能够ping/解析所有域。当运行docker build时,npm会失败,并出现EAI_AGAIN错误。

决议

docker build具有可用于Docker build docs--network=
找到您正在用于docker run或docker-compose项目的工作Docker网络。

  • 查找docker网络:docker network ls
  • 使用docker build --network=<insert network from above> -f "myproj\Dockerfile" -t app:latest以上的网络运行Docker构建
suzh9iv8

suzh9iv82#

这是一个连接问题,在我的情况下,Docker重启解决问题
服务Docker重启

nom7f22z

nom7f22z3#

我在这里也面临着类似的问题,在上面提到的解决方案之一中,它说要使用

docker network ls

字符串
在我的情况下,

NETWORK ID     NAME      DRIVER    SCOPE
2e21805e212e   bridge    bridge    local
034ff467139e   host      host      local
ac0222d91002   none      null      local


尝试使用这三种方法,

sudo docker build --network=034ff467139e -t getting-started ./


完全相同的问题仍然存在,也尝试重新启动Docker服务,也没有工作
编辑:问题似乎是这个命令期望网络的“名称”作为值,而不是“网络ID”,这样运行它解决了我的问题,

docker build --network=host -t getting-started

pkbketx9

pkbketx94#

这是一个连接问题,与你的代码无关,Dockerfile很好。
这可能是一个间歇性的连接问题,也可能是一个网络防火墙的限制,或其他一些疯狂的IP疯狂的事情。
我看到很多间歇性的连接问题,运行各种工具来打包来自互联网的东西,有时这只是其中之一。
在与上次尝试不同的网络上的计算机上尝试它。

fcg9iug3

fcg9iug35#

这是一个网络配置问题,更可能是iptables.你设置了docker0自定义范围吗?看看那里。

vecaoik1

vecaoik16#

我在Ubuntu 22.04.3 LTS上运行Docker 24.0.7。
我尝试在Node.js容器(docker run -v $PWD:/app -w /app node npm install express)上安装express模块,但失败了,出现了同样的错误。
奇怪的是...重新启动也解决了我的问题!!
可能与我之前使用Nginx容器(docker run -p 8080:80 -v $PWD:/usr/share/nginx/html nginx)运行的任何端口Map有关,我看到它在我的Ubuntu上创建了一个FW规则
x1c 0d1x的数据

相关问题