Elasticsearch-curatorのDockerイメージを構築しようとしています。
これが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 .
しかし、virtualenvを取得したい場合は、次のようになります。
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 varを削除する必要があります。
それを達成する他の方法はありますか?非常に一般的な使用例のようです...
コマンドラインに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 .
Dockerfileにプロキシ設定を含めないでください。
ホストマシンでプロキシ設定を正しく構成した場合、--network= Host
を使用してDockerイメージを構築できます。これにより、ビルドコマンドでホストのネットワーク設定が使用されます。
docker build --no-cache --network=Host -t elasticsearch-curator:5.4 .
これは、pipのインストールで明示的なプロキシ引数が必要になるためだと思います。
install.sh
to pip installs。
プロキシが設定されている場合(build-arg
、つまり環境を設定する)、次のようにインストールします:
pip install --proxy=https://user@mydomain:port virtualenv
環境変数で:
pip install --proxy=$HTTP_PROXY virtualenv
そうでない場合は、プロキシなしのpipインストール。
ホームまたはユーザーディレクトリのディレクトリにある〜\ .docker\config.jsonファイルを使用して、すべてのクライアントプロキシを設定できます。
{
"credsStore": "wincred",
"auths": {},
"stackOrchestrator": "swarm",
"proxies":
{
"default":
{
"httpProxy": "http://127.0.0.1:3001",
"noProxy": "*.test.example.com,.example2.com"
}
}
}
最初の3つのエントリはデフォルトで存在します。 "proxies"セクションをファイルに追加するだけです。