【问题标题】:NPM install fails inside Docker container but runs on host w/ corporate proxyNPM 安装在 Docker 容器内失败,但在带有公司代理的主机上运行
【发布时间】:2016-05-24 02:57:50
【问题描述】:

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

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 收到以下错误:

最后一次尝试时出错:错误:隧道套接字不能 已建立,原因=getaddrinfo ENOTFOUND proxy.gc.corp.com proxy.gc.corp.com:8888

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

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

【问题讨论】:

  • 您的容器无法通过 dns 解析 proxy.gc.corp.com。你能解析正在运行的容器中的任何地址吗?
  • 不,我不能,你是对的。为什么它与 docker 容器内的不同,而不是在主机上执行的相同 http 调用?它们都是 Ubunutu 14.04 操作系统,我猜是 docker 容器 I.P.什么的。
  • 很难说,应该正常工作。什么版本的码头工人?你的容器/etc/resolv.conf 说什么?你能从你的容器 ping 任何外部的东西吗?

标签: node.js proxy docker npm npm-install


【解决方案1】:

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

Docker - Network calls fail during image build on corporate network

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

【讨论】:

    猜你喜欢
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    相关资源
    最近更新 更多