node.js - NPM 安装在 Docker 容器内失败,但在带有企业代理的主机上运行

标签 node.js proxy docker npm npm-install

我正在将一些 node.js 服务部署到 docker 容器中的企业系统。我的这些服务的 Dockerfile 非常基本,除了我正在设置代理环境变量:

FROM node:4.2.3

ADD . /src

WORKDIR /src

ENV http_proxy http://proxy.gc.corp.com:8888/  
ENV https_proxy http://proxy.gc.corp.com:8888/  
ENV HTTP_PROXY http://proxy.gc.corp.com:8888/  
ENV HTTPS_PROXY http://proxy.gc.corp.com:8888/  


RUN npm install --production

EXPOSE 3000

CMD npm start >> /log/eva_web_api

当我从这个文件构建我的图像时,我从 NPM 收到以下错误:

error on last attempt: Error: tunneling socket could not be established, cause=getaddrinfo ENOTFOUND proxy.gc.corp.com proxy.gc.corp.com:8888

但是,当我在主机(安装了 Node.js 和 Docker)上执行 NPM 安装时,NPM 安装正常执行并且没有问题地完成。其中一台主机我设置了与我在 Dockerfile 中定义的相同的 ENV 变量。

任何人对这里发生的事情有任何想法,我已经向负责代理的网络团队提交了一张票,但他们还没有提供任何帮助。

最佳答案

这是与 DNS 相关的,在这里找到了我的解决方案:

Docker - Network calls fail during image build on corporate network

TLDR;必须使用我的 DNS IP 配置 DOCKER_OPTS。

关于node.js - NPM 安装在 Docker 容器内失败,但在带有企业代理的主机上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35371424/

相关文章:

node.js - 使用 NodeJS 评估 MongoDB 查询

ssl - Docker 推送与神器

docker - Visual Studio 生成的 Dockerfile 不适用于手动 docker build

java - Hibernate.initialize() 如何工作

docker - 更改 boot2docker 内存分配

ruby-on-rails - 与 ws ://localhost:9292/faye was interrupted while the page was loading 的连接

windows - 如何在 Windows 上使用 --harmony 标志构建 Node.js

javascript - 由于 MIME 类型,我的 html 出现错误

java - 无需代理直接连接到互联网

java - 使用 ChromeDriver 设置 browsermob 代理