我想为elasticsearch策展人打造一个码头形象,
下面是dockerfile:
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"]问题是,我是在一个代理人之下,所以我必须建立我的形象:
docker build --no-cache --build-arg HTTP_PROXY=http://xx.xx.xx.xx:xx -t elasticsearch-curator:5.4 .但当它想要虚拟的时候,我得到:
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/我发现有人在解决问题
ENV http_proxy http://proxy-chain.xxx.com:911/
ENV https_proxy http://proxy-chain.xxx.com:912/在Dockerfile中,但这对我来说是不可能的,因为我的代理只在我的建筑物上有效,所以如果来自另一个地方的另一个人想要构建映像,他需要从Dockerfile中删除http_proxy env。
还有其他方法来实现这一目标吗?这似乎是一个很普通的用例..。
发布于 2018-01-16 09:54:30
我通过在命令行中添加HTTPS_PROXY来解决这个问题:
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 .发布于 2018-01-16 09:55:23
不要在Dockerfile中包括代理设置。
如果您已在主机上正确配置了代理设置,则可以使用--network= host构建停靠器映像。这将使build命令使用主机的网络设置。
docker build --no-cache --network=host -t elasticsearch-curator:5.4 .发布于 2018-01-16 09:45:55
我认为这是因为pip安装需要显式代理arg。
尝试制作一个install.sh来安装pip。
如果配置了代理(作为build-arg传递,即在环境中设置),请用以下方式安装它:
pip install --proxy=https://user@mydomain:port virtualenv使用env变量:
pip install --proxy=$HTTP_PROXY virtualenv如果没有,则在没有代理的情况下安装pip。
https://stackoverflow.com/questions/48277599
复制相似问题