构建Docker映像可以在桌面上正常工作。安装Node.js NPM依赖项照常工作。但是,当使用在公司代理后面托管的持续集成服务器(例如Jenkins)时,构建Docker映像将失败。
在构建Node.js pacakges时,如果在克隆GIT依赖项时无法连接到GIT ,则命令 npm install 失败。
e1ce5e8407d1: Already exists Status: Image is up to date for node:0.10.33 ---> e1ce5e8407d1 Step 1 : RUN mkdir -p /usr/src/app ---> Using cache ---> 965cad0c68b0 Step 2 : WORKDIR /usr/src/app ---> Using cache ---> 4c498f0c07e9 Step 3 : COPY package.json /usr/src/app/ ---> b0662a8275fb Removing intermediate container 5aca20551452 Step 4 : RUN npm install ---> Running in 7ccf9e5362af npm WARN package.json [email protected] 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 ERR! git clone https://github.com/npm/npm2es.git Cloning into bare repository '/root/.npm/_git-remotes/https-github-com-npm-npm2es-git-60a75edb'... npm ERR! git clone https://github.com/npm/npm2es.git fatal: unable to access 'https://github.com/npm/npm2es.git/': Failed to connect to github.com port 443: Connection timed out
当构建Java,Ruby或Go容器时,会发生相同的情况,其中依赖关系位于整个公司代理服务器中的存储库服务器中。
知道您可以使用HTTP_PROXY环境变量配置Docker后,如何正确配置Docker以在CI环境中正确构建映像?
注意:Docker 1.9 可能 有助于解决此问题:
HTTP_PROXY
用法(建议):
docker build --build-arg http_proxy=http://my.proxy.url --build-arg foo=bar <<MARK FROM busybox RUN <command that need http_proxy> ARG --description="foo's description" foo USER $foo MARK