J'essaie de construire une image Docker pour elasticsearch-conservateur,
Voici le fichier docker:
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"]
La chose est que je suis sous un proxy, je dois donc construire mon image avec:
docker build --no-cache --build-arg HTTP_PROXY=http://xx.xx.xx.xx:xx -t elasticsearch-curator:5.4 .
Mais quand il veut devenir virtuel, je reçois:
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/
J'ai trouvé des gens qui résolvaient un problème en insérant
ENV http_proxy http://proxy-chain.xxx.com:911/
ENV https_proxy http://proxy-chain.xxx.com:912/
dans le fichier Dockerfile, mais ce n’est pas possible pour moi, car mon proxy n’est valable que sur mon bâtiment. Par conséquent, si une autre personne d’un autre endroit souhaite créer l’image, il devra supprimer http_proxy env var de Dockerfile.
Y a-t-il un autre moyen d'y parvenir? Cela semble être un cas d'utilisation très courant ...
Je l'ai résolu en ajoutant HTTPS_PROXY
en ligne de commande:
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 .
N'incluez pas les paramètres de proxy dans le fichier Docker.
Si vous avez correctement configuré les paramètres de proxy sur la machine hôte, vous pouvez créer l'image du menu fixe avec --network= Host
. Cela fera que la commande de construction utilise les paramètres réseau de l'hôte.
docker build --no-cache --network=Host -t elasticsearch-curator:5.4 .
Je pense que cela est dû au fait que pip install nécessite un argument de proxy explicite.
Essayez de créer un install.sh
pour installer les installations.
Si un proxy est configuré (transmis sous la forme build-arg
, c'est-à-dire défini dans l'environnement), installez-le avec:
pip install --proxy=https://user@mydomain:port virtualenv
Avec variable env:
pip install --proxy=$HTTP_PROXY virtualenv
Sinon, pip installer sans proxy.
Vous pouvez configurer tous les mandataires des clients via le fichier ~\.docker\config.json de votre répertoire de base ou répertoire utilisateur:
{
"credsStore": "wincred",
"auths": {},
"stackOrchestrator": "swarm",
"proxies":
{
"default":
{
"httpProxy": "http://127.0.0.1:3001",
"noProxy": "*.test.example.com,.example2.com"
}
}
}
Les trois premières entrées sont là par défaut, ajoutez simplement la section "proxies" à votre fichier.