Docker Daemon HTTP Proxy
There is a lot of documentation about setting the HTTP_PROXY environment variable for the Docker daemon. The environment variable is available only in working containers , so this will not help us.
Solution in Dockerfile
Although setting the environment variable HTTP_ENV or http_env in the Docker file may help, this also does not help our cause.
ENV http_proxy http://proxy.mycompany.com:80
The reason is that each particular service only differs the HTTP proxy setting in a different way. How I can decide is below.
- NPM: NPM requires the configuration of the HTTP_PROXY variable using the CLI command.
- GIT: GIT requires the HTTP_PROXY variable to be configured using the CLI command.
- MAVEN: the MVN command requires setting HTTP_PROXY as the XML file in the user directory in ~ .m2 / settings.xml . For Docker, you can add it to the root directory "/root/.m2/settings.xml" (unsafe, only for development) or to the home directory of the Dockerfile user.
For example, running the application using the Dockerfile, I can create the image using the following Docker file:
FROM node:0.10.33 # Prepare RUN mkdir -p /usr/src/app WORKDIR /usr/src/app # Use the cache for dependencies COPY package.json /usr/src/app/ # If building behind an http_proxy, set them for git and npm RUN git config --global http.proxy http:
Note that I configured both GIT and NPM using the CLI command to explicitly configure the proxy server before running the NPM install command. Thus, the dependencies between NPM and GIT will be automatically restored and cloned accordingly.
The result of creating an image with this Docker file works as expected:
[root@pppdc9prd6dq newww]# fig build ... ... Building npmregistryserver... ---> Using cache ---> 965cad0c68b0 Step 2 : WORKDIR /usr/src/app ---> Using cache ---> 4c498f0c07e9 Step 3 : COPY package.json /usr/src/app/ ---> ae8ff7861246 Removing intermediate container ba1d7b8c9963 Step 4 : RUN npm config set proxy http://qypprdproxy02.ie.company.net:80 && npm config set https-proxy http://qypprdproxy02.ie.company.net:80 && npm install ---> Running in aa6e05d9c7a4 npm WARN package.json newww@2.0.0 No README data npm WARN package.json Dependency 'async-cache' exists in both dependencies and devDependencies, using 'async-cache@^0.1.5' from dependencies npm WARN deprecated extend@1.1.3: Please update to the latest version. > v8flags@1.0.8 install /usr/src/app/node_modules/gulp/node_modules/v8flags > node fetch.js > hiredis@0.1.17 install /usr/src/app/node_modules/hiredis > node-gyp rebuild make: Entering directory '/usr/src/app/node_modules/hiredis/build' CC(target) Release/obj.target/hiredis/deps/hiredis/hiredis.o CC(target) Release/obj.target/hiredis/deps/hiredis/net.o CC(target) Release/obj.target/hiredis/deps/hiredis/sds.o CC(target) Release/obj.target/hiredis/deps/hiredis/async.o AR(target) Release/obj.target/deps/hiredis.a COPY Release/hiredis.a CXX(target) Release/obj.target/hiredis/src/hiredis.o CXX(target) Release/obj.target/hiredis/src/reader.o SOLINK_MODULE(target) Release/obj.target/hiredis.node SOLINK_MODULE(target) Release/obj.target/hiredis.node: Finished COPY Release/hiredis.node make: Leaving directory '/usr/src/app/node_modules/hiredis/build' npm WARN engine hawk@0.10.2: wanted: {"node":"0.8.x"} (current: {"node":"0.10.33","npm":"2.1.11"}) > pngcrush-bin@1.0.0 postinstall /usr/src/app/node_modules/imagemin-pngcrush/node_modules/pngcrush-bin > node lib/install.js fetch : https://raw.githubusercontent.com/imagemin/pngcrush-bin/v1.0.0/vendor/linux/pngcrush โ pre-build test passed successfully! > dtrace-provider@0.3.1 install /usr/src/app/node_modules/npm-typeahead/node_modules/restify/node_modules/dtrace-provider > scripts/install.js npm WARN engine cryptiles@0.1.3: wanted: {"node":"0.8.x"} (current: {"node":"0.10.33","npm":"2.1.11"}) npm WARN engine sntp@0.1.4: wanted: {"node":"0.8.x"} (current: {"node":"0.10.33","npm":"2.1.11"}) npm WARN engine boom@0.3.8: wanted: {"node":"0.8.x"} (current: {"node":"0.10.33","npm":"2.1.11"}) npm WARN engine hoek@0.7.6: wanted: {"node":"0.8.x"} (current: {"node":"0.10.33","npm":"2.1.11"}) npm WARN cannot run in wd newww@2.0.0 gulp build (wd=/usr/src/app) newww-metrics@1.0.0 node_modules/newww-metrics murmurhash@0.0.2 node_modules/murmurhash npm-humans@2.0.1 node_modules/npm-humans leven@1.0.1 node_modules/leven chunk@0.0.2 node_modules/chunk npm-expansions@1.14.0 node_modules/npm-expansions similarity@1.0.1 node_modules/similarity truncate@1.0.4 node_modules/truncate
This worked correctly as expected, and you can have a CI / CD environment behind an HTTP proxy to restore images based on this Docker file.
Marcello de Sales Jan 02 '15 at 22:25 2015-01-02 22:25
source share