【发布时间】: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