2016-02-09 26 views
5

mam ten Dockerfile:Docker: npm zainstalować za pełnomocnika

FROM node:argon 

ENV http_proxy http://user:[email protected]:3128 
ENV https_proxy https://user:[email protected]:3128 

RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 

# Install app dependencies 
COPY package.json /usr/src/app/ 
RUN npm install 

# Bundle app source 
COPY . /usr/src/app 

EXPOSE 8080 
CMD [ "npm", "start" ] 

Ale ja dostać ten błąd, w KMP zainstalować kroku:

npm info it worked if it ends with ok npm info using [email protected] npm info using [email protected] npm WARN package.json [email protected] No description npm WARN package.json [email protected] No repository field. npm WARN package.json [email protected] No README data npm info preinstall [email protected] npm info attempt registry request try #1 at 7:09:23 AM npm http request GET https://registry.npmjs.org/body-parser npm info attempt registry request try #1 at 7:09:23 AM npm http request GET https://registry.npmjs.org/express npm info retry will retry, error on last attempt: Error: tunneling socket could not be established, cause=write EPROTO npm info retry will retry, error on last attempt: Error: tunneling socket could not be established, cause=write EPROTO

Myślę, że to ze względu na pełnomocnika. Próbowałem również wstawić , ale nadal otrzymuję ten sam błąd.

Ponadto, w moim pliku /etc/systemd/system/docker.service.d/http-proxy.conf mam to:

Environment="HTTP_PROXY=http://user:[email protected]:3128" 
Environment="HTTPS_PROXY=https://user:[email protected]:3128" 

Dzięki z góry.

Odpowiedz

3

Najpierw https_proxy powinien używać adresu URL http, a nie adresu https.

Po drugie, nie ma potrzeby, aby umieścić swoje ustawienia serwera proxy w swojej Dockfile: można używać build time variables

docker build --build-arg HTTP_PROXY=http://user:[email protected]:3128 --build-arg HTTPS_PROXY=http://user:[email protected]:3128 .

Wreszcie proxy settings at the docker service level pozwala demon doker ciągnąć obrazy z Internetu. Nie oznacza to, że komenda unix wykonana (RUN) przez docker build skorzystałaby z nich. Dlatego trzeba przekazać je jako zmienne środowiskowe czasu kompilacji.

3

Miałem również ten sam problem i nie chciałem ustawiać żadnych informacji o proxy na moim obrazie, ponieważ nie chciałem być zależny od środowiska mojej firmy.

Moim rozwiązaniem było użycie cntlm działającego w trybie bramy. Aby to zrobić umieścić zestaw flag Gateway do yes następuje pozwalają zasady w moim pliku konfiguracyjnego cntlm:

Gateway   yes 
# Allow local 
Allow   127.0.0.1 
# Allow docker subnetwork 
Allow   172.17.0.0/16 

Potem udało mi się uruchomić mój plik Döcker przez uzyskanie adresu interfejsu dokcer0 (got komendą ifconfig):

docker build -t my-image --build-arg HTTP_PROXY=http://172.17.0.1:3128 --build-arg HTTPS_PROXY=http://172.17.0.1:3128 . 
+0

Mam ten sam problem, ale Twoje rozwiązanie nie działa dla mnie. Mam uruchomione cntlm z Firefoxem, ustawienie proxy na 127.0.0.1:3128. Ale bez względu na to, co próbuję jako IP z dockerem, to nie działa. Używam Windows 10. Mam 10.0.75.0 jako adres podsieci i dla ipconfig/all mam 10.0.75.1. NPM niczego nie zainstaluje. Dowolny pomysł? BTW: Jeśli wstawię użytkownika informacji o proxy: [email protected] to działa dobrze. –

Powiązane problemy