泊坞窗:NPM安装代理背后

问题描述 投票:10回答:3

我有这个Dockerfile:

FROM node:argon

ENV http_proxy http://user:[email protected]:3128
ENV https_proxy https://user:[email protected]: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安装步骤:

新公共管理信息,它的工作,如果它使用[email protected]使用[email protected] NPM NPM信息确定NPM信息结束WARN的package.json [email protected]没有说明NPM WARN的package.json [email protected]。 0无库场。 NPM WARN的package.json [email protected]没有README数据NPM信息预装[email protected] NPM信息尝试注册请求尝试#1,在上午07时09分23秒NPM HTTP请求GET https://registry.npmjs.org/body-parser NPM信息尝试注册请求尝试#1,在上午07时09分23秒NPM HTTP请求GET https://registry.npmjs.org/express NPM信息重试将重试,在最后一次尝试错误:错误:套接字隧道无法建立,原因=写EPROTO NPM信息重试将重试,在最后一次尝试错误:错误:套接字隧道无法建立,原因=写EPROTO

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

RUN npm config set proxy http://user:[email protected]:3128
RUN npm config set https-proxy http://user:[email protected]:3128

但仍然得到同样的错误。

此外,在我的文件/etc/systemd/system/docker.service.d/http-proxy.conf我有这样的:

Environment="HTTP_PROXY=http://user:[email protected]:3128"
Environment="HTTPS_PROXY=https://user:[email protected]:3128"

提前致谢。

proxy docker npm
3个回答
12
投票

首先https_proxy应该使用一个HTTP URL,而不是HTTPS URL。

其次,你不需要在你的Dockfile嵌入您的代理服务器设置:您可以使用build time variables

docker build --build-arg HTTP_PROXY=http://user:[email protected]:3128 --build-arg HTTPS_PROXY=http://user:[email protected]:3128 .

最后,proxy settings at the docker service level允许泊坞窗守护程序从互联网上拉的图像。这并不意味着UNIX命令执行(RUN指令)由docker build会从中受益。因此,有必要将它们传递作为构建时的环境变量。


4
投票

我也有同样的问题,并没有要设置在我的形象的任何代理信息,因为我不想依赖我的公司环境。

我的解决方案是使用在网关模式下运行的cntlm。要做到这一点,我把标志Gateway设置为yes我cntlm配置文件中的以下允许规则:

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

然后,我能够获得dokcer0接口地址(含ifconfigcommand得)来运行我的搬运工文件:

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 .

0
投票

(只要你知道,这个包我自己写的)

您可以使用docker-container-proxy,它允许任何搬运工集装箱代理的配置,而无需修改任何代码。

赶紧跑:

npx dockerproxy start --address company-proxy-address.com --port 8080
# Do anything else that needs a Proxy
© www.soinside.com 2019 - 2024. All rights reserved.