当前位置: 首页 > 知识库问答 >
问题:

Docker:npm安装在代理之后

董弘新
2023-03-14

我有一个Dockerfile:

FROM node:argon

ENV http_proxy http://user:pass@proxy.company.priv:3128
ENV https_proxy https://user:pass@proxy.company.priv:3128

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install

# Bundle app source
COPY . /usr/src/app

EXPOSE 8080
CMD [ "npm", "start" ]

但我在npm安装步骤中遇到了这个错误:

npm info它工作,如果它结束与ok npm info使用npm@2.14.12npm info使用node@v4.2.6npm WARNpackage.jsondeployer-ui@1.0.0没有描述npm WARNpackage.jsondeployer-ui@1.0.0没有存储库字段。npm WARNpackage.jsondeployer-ui@1.0.0没有README数据npm info预装deployer-ui@1.0.0npm info尝试注册表请求尝试#1在7:09:23 AM npm超文本传输协议请求GEThttps://registry.npmjs.org/body-parsernpm info尝试注册表请求尝试#1在7:09:23 AM npm超文本传输协议请求GEThttps://registry.npmjs.org/expressnpm info重试将重试,最后一次尝试时出错:错误:隧道套接字无法建立,原因=写入EPROTO npm info重试将重试,最后一次尝试时出错:错误:隧道套接字无法建立,原因=写入EPROTO

我想这是由于代理。我也试着把

RUN npm config set proxy http://user:pass@proxy.company.priv:3128
RUN npm config set https-proxy http://user:pass@proxy.company.priv:3128

但仍然得到同样的错误。

此外,在我的文件/etc/systemd/system/docker中。服务d/http代理。我有这个:

Environment="HTTP_PROXY=http://user:pass@proxy.company.priv:3128"
Environment="HTTPS_PROXY=https://user:pass@proxy.company.priv:3128"

提前谢谢。

共有3个答案

唐法
2023-03-14

将此添加到Dockerfile对我很有用:

RUN npm config set https-proxy http://user:password@proxy.company.priv:80
RUN npm config set proxy http://user:password@proxy.company.priv:80
闻人望
2023-03-14

我也有同样的问题,不想在我的图像中设置任何代理信息,因为我不想依赖于我的公司环境。

我的解决方案是使用在网关模式下运行的cntlm。为此,我在我的cntlm配置文件中将标志设置为“是”,如下允许规则:

 Gateway         yes
 # Allow local
 Allow           127.0.0.1
 # Allow docker subnetwork
 Allow           172.17.0.0/16

然后我能够通过获取dokcer0接口地址(使用ifconfig命令获得)来运行我的docker文件:

docker build -t my-image --build-arg HTTP_PROXY=http://172.17.0.1:3128 --build-arg HTTPS_PROXY=http://172.17.0.1:3128 .

与docker run相同:

docker run --rm -e HTTP_PROXY=http://172.17.0.1:3128 --build-arg HTTPS_PROXY=http://172.17.0.1:3128 my-image

但是请注意,由于docker 17.07,您可以简单地配置docker客户端代理。

因此,您的<代码>~/。docker/config。json将类似于

{
  "proxies": {
      "default":{
          "httpProxy": "http://172.17.0.1:3128/",
          "httpsProxy": "http://172.17.0.1:3128/",
          "noProxy": "127.0.0.1,172.17.0.0/16,*.some.compagny.domain"
      }
}
柯骏
2023-03-14

首先,https_proxy应该使用超文本传输协议url,而不是https url。

其次,您不需要将代理设置嵌入到Dockfile中:您可以使用构建时变量

docker build--构建arg HTTP\U代理=http://user:pass@代理。公司priv:3128—构建arg HTTPS\u代理=http://user:pass@代理。公司私人:3128

最后,docker服务级别的代理设置允许docker守护进程从internet提取图像。这并不意味着docker build执行的unix命令(RUN指令)将从中受益。因此需要将它们作为构建时环境变量传递。

 类似资料:
  • 一、要求   你需要一个主机来运行代理。我们为每个设备创建一个代理。主机可以运行多个代理。   任何支持NodeJS和adb的操作系统都应该可以正常工作,但是Linux和Windows是唯一可以进行定期测试的操作系统。 如果你的主机只有USB 3,你可能需要使用Windows(至少截至2014年2月,Linux上的USB 3驱动程序非常不稳定)。 如果你的主机作为USB 2.0端口,那么Linux

  • 我想在我的Windows 10上安装水槽代理,以便将日志放入安装在虚拟机上的hortonworks沙盒中。我参考这个链接做了所有设置-https://gudisevablog.wordpress.com/2016/12/08/apache-flume-windows-10/但是当我运行这个时出现了一些问题 命令 - “ flume-ng agent –conf %FLUME_CONF% –conf

  • 我正在我的服务器debian上安装mediaproxy。请查看下面粘贴的错误。我也尝试过安装依赖项,但仍然会发生此错误。我需要帮助。 root@server:/usr/local/src/mediaproxy-2.5。2# ./设置。py build运行build运行build\u py运行build\u ext building'mediaproxy。接口。系统_conntrack'扩展x86_

  • 我正在尝试安装的Centos 7 64位与Java8和Tomcat 8 Janalyiler代理 root@ads[/opt/jprofiler9]#jpenable连接到组织。阿帕奇。卡特琳娜。启动。引导启动[23360]。。。请选择分析模式:GUI模式(附加JProfiler GUI)[1,输入]脱机模式(使用配置文件设置分析设置)[2]1请输入分析端口[59687]8849

  • 我想使用apache web server从tomcat服务器反向代理web服务。我已经修改了httpd。形态 我的Tomcat服务器运行在端口8080上,现在当我运行localhost/ROOT时,我得到错误500内部服务器错误。 错误日志中的最后一项是: 知道我做错了什么吗?

  • 我在新的开发计算机上安装了Visual Studio2012,运行良好。我不假思索地将VS2010安装到已经安装了2012年的电脑上。2012年继续正常工作,但2010年不能编译我以前工作的任何源代码,它似乎无法找到任何正确的库。 例如,在一个简单的C++hello world程序中,我得到以下错误