NPM 安装在 Docker 容器内失败,但在带有企业代理的主机上运行
NPM install fails inside Docker container but runs on host w/ corporate proxy
我正在 docker 容器中向企业系统部署一些 node.js 服务。我的 Docker 这些服务的文件非常基本,除了我正在设置代理环境变量:
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 安装正常执行并且没有问题地完成。其中一台主机我设置了与我在 Docker 文件中定义的相同的 ENV 变量。
任何人对这里发生的事情有任何想法,我已经向负责代理的网络团队提交了一张票,但他们还没有提供任何帮助。
与 DNS 相关,在这里找到了我的解决方案:
Docker - Network calls fail during image build on corporate network
TLDR;必须使用我的 DNS IP 配置 DOCKER_OPTS。
我正在 docker 容器中向企业系统部署一些 node.js 服务。我的 Docker 这些服务的文件非常基本,除了我正在设置代理环境变量:
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 安装正常执行并且没有问题地完成。其中一台主机我设置了与我在 Docker 文件中定义的相同的 ENV 变量。
任何人对这里发生的事情有任何想法,我已经向负责代理的网络团队提交了一张票,但他们还没有提供任何帮助。
与 DNS 相关,在这里找到了我的解决方案:
Docker - Network calls fail during image build on corporate network
TLDR;必须使用我的 DNS IP 配置 DOCKER_OPTS。