Ich stelle einige node.js-Dienste in Docker-Containern auf einem Unternehmenssystem bereit. Meine Dockerfiles für diese Dienste sind sehr einfach, mit der Ausnahme, dass ich die Proxy-Umgebungsvariablen setze:NPM-Installation schlägt innerhalb des Docker-Containers fehl, läuft aber auf Host mit Unternehmens-Proxy
FROM node:4.2.3
ADD . /src
WORKDIR /src
ENV http_proxy http://proxy.gc.corp.com:8888/
ENV https_proxy http://proxy.gc.corp.com:8888/
ENV HTTP_PROXY http://proxy.gc.corp.com:8888/
ENV HTTPS_PROXY http://proxy.gc.corp.com:8888/
RUN npm install --production
EXPOSE 3000
CMD npm start >> /log/eva_web_api
Als ich mein Bild aus dieser Datei baue ich folgende Fehlermeldung von NPM erhalten:
error on last attempt: Error: tunneling socket could not be established, cause=getaddrinfo ENOTFOUND proxy.gc.corp.com proxy.gc.corp.com:8888
Wenn ich jedoch die NPM-Installation auf dem Host-Computer (auf dem Node.js und Docker installiert sind) ausführt, wird die NPM-Installation normal ausgeführt und ohne Probleme abgeschlossen. Auf dem Host habe ich dieselben ENV-Variablen, die ich in meiner Dockerfile definiert habe.
Wer irgendwelche Ideen hat, was hier vor sich geht, ich habe ein Ticket offen mit meinem Netzwerk-Team, das für den Proxy zuständig ist, aber sie sind noch keine Hilfe.
Ihr Container kann proxy.gc.corp.com nicht über DNS auflösen. Können Sie Adressen in einem aktiven Container auflösen? – Matt
Nein, ich kann nicht, du hast Recht. Warum unterscheidet es sich vom Andockcontainer, wenn dieselben HTTP-Aufrufe auf dem Host ausgeführt werden? Sie sind beide Ubunutu 14.04 OSs, ich vermute den Andock-Container I.P. oder so. –
Schwer zu sagen, sollte normalerweise funktionieren. Welche Version von Docker? Was sagen Ihre Container '/ etc/resolv.conf'? Können Sie etwas von Ihrem Container pingen? – Matt