首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代理下的dockerfile中的Pip

代理下的dockerfile中的Pip
EN

Stack Overflow用户
提问于 2018-01-16 09:10:02
回答 4查看 20.1K关注 0票数 17

我想为elasticsearch策展人打造一个码头形象,

下面是dockerfile:

代码语言:javascript
复制
FROM alpine:3.7

RUN adduser -S curator

RUN apk add --update \
    python \
    python-dev \
    py-pip \
    build-base \
  && pip install virtualenv \
  && pip install elasticsearch-curator \
  && rm -rf /var/cache/apk/*

USER curator

ENTRYPOINT [ "/usr/bin/curator"]

问题是,我是在一个代理人之下,所以我必须建立我的形象:

代码语言:javascript
复制
docker build  --no-cache --build-arg HTTP_PROXY=http://xx.xx.xx.xx:xx -t elasticsearch-curator:5.4 .

但当它想要虚拟的时候,我得到:

代码语言:javascript
复制
Collecting virtualenv
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7fb8259ed350>, 'Connection to pypi.python.org timed out. (connect timeout=15)')': /simple/virtualenv/
  Retrying (Retry(total=3, connect=None, read=None, redirect=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7fb8259ed210>, 'Connection to pypi.python.org timed out. (connect timeout=15)')': /simple/virtualenv/

我发现有人在解决问题

代码语言:javascript
复制
ENV http_proxy http://proxy-chain.xxx.com:911/
ENV https_proxy http://proxy-chain.xxx.com:912/

在Dockerfile中,但这对我来说是不可能的,因为我的代理只在我的建筑物上有效,所以如果来自另一个地方的另一个人想要构建映像,他需要从Dockerfile中删除http_proxy env。

还有其他方法来实现这一目标吗?这似乎是一个很普通的用例..。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-01-16 09:54:30

我通过在命令行中添加HTTPS_PROXY来解决这个问题:

代码语言:javascript
复制
docker build  --no-cache --build-arg HTTP_PROXY=http://xx.xx.xx.xx:xx --build-arg HTTPS_PROXY=http://xx.xx.xx.xx:xx -t elasticsearch-curator:5.4 .
票数 29
EN

Stack Overflow用户

发布于 2018-01-16 09:55:23

不要在Dockerfile中包括代理设置。

如果您已在主机上正确配置了代理设置,则可以使用--network= host构建停靠器映像。这将使build命令使用主机的网络设置。

代码语言:javascript
复制
docker build  --no-cache --network=host -t elasticsearch-curator:5.4 .
票数 15
EN

Stack Overflow用户

发布于 2018-01-16 09:45:55

我认为这是因为pip安装需要显式代理arg。

尝试制作一个install.sh来安装pip。

如果配置了代理(作为build-arg传递,即在环境中设置),请用以下方式安装它:

代码语言:javascript
复制
pip install --proxy=https://user@mydomain:port virtualenv

使用env变量:

代码语言:javascript
复制
pip install --proxy=$HTTP_PROXY virtualenv

如果没有,则在没有代理的情况下安装pip。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48277599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档