【问题标题】:"npm install" fails with ECONNREFUSED while building Docker image构建 Docker 映像时,“npm install”失败并显示 ECONNREFUSED
【发布时间】:2019-07-09 16:04:31
【问题描述】:

我正在尝试构建一个包含 NPM 并安装一些工具的 Docker 映像,但是当我发出安装命令时,如下所示:

RUN npm install -g sfdx-cli

构建挂起一段时间,然后抛出很多错误。而且是同样的错误:

npm ERR! fetch failed http://10.252.156.164:4880/@babel%2fcode-frame/-/code-frame-7.0.0.tgz
npm WARN retry will retry, error on last attempt: Error: connect ECONNREFUSED 10.252.156.164:4880

我通过搜索此错误在网络上找到的所有其他资源都会导致有关在代理后面使用 NPM 的答案/文章,但这里不是这种情况。我没有代理。

我该怎么做才能停止这个错误?


在构建时在我的 Dockerfile 中运行 RUN echo "${http_proxy}" && echo "${HTTP_PROXY}",我得到以下输出:

Step 8/16 : RUN echo "${http_proxy}" && echo "${HTTP_PROXY}"
 ---> Running in 09bfc89592ae


Removing intermediate container 09bfc89592ae

【问题讨论】:

  • 有趣的是这个地址 -> 10.252.156.164:4880。据我了解,这不是 NPM 用于获取模块的默认地址。您是否使用自定义构建的 Docker 映像来运行这些命令?此 IP 地址与您运行计算机的同一网络上吗?
  • 我在我的 Dockerfile 中使用 ubuntu:latest 基础镜像。该地址不属于我的网络。我也不知道为什么 NPM 指向那个地址。
  • 你能把RUN echo "${http_proxy}" && echo "${HTTP_PROXY}"添加到你的docker镜像并发布输出吗?
  • 当然。我用输出编辑了我的原始帖子。
  • 不是答案,但您可以将您的 npm install 命令编辑为:npm install -g https://developer.salesforce.com/media/salesforce-cli/sfdx-cli/channels/stable/sfdx-cli-v7.8.1-8f830784cc-darwin-x64.tar.xz 这是该模块的最新版本,将强制 NPM 使用不同的 URL 来获取它。

标签: docker npm npm-install


【解决方案1】:

我能够成功构建 docker 镜像,这是我的 Dockerfile,

FROM alpine:3.8
RUN apk add --no-cache nodejs npm
RUN npm install -g sfdx-cli

如果您不想将 alpine 作为基础镜像,请分享您的 Dockerfile。

或者你也可以运行RUN npm config set registry https://registry.npmjs.com/

【讨论】:

  • 感谢您的回复。今天我将尝试使用 alpine 映像而不是 Ubuntu 映像。我搜索了一些关于 Alpine 的信息,由于它的体积小,它似乎是一个非常好的容器基础镜像。 :) 我会告诉你这是否有效。
【解决方案2】:

试试docker build . --network="host"

(参考:https://github.com/verdaccio/docker-examples/issues/33)

【讨论】:

    猜你喜欢
    • 2021-05-08
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多