小编典典

如何通过Jenkins在HTTP_PROXY之后使用Dockerfile构建Docker映像?

docker

构建Docker映像可以在桌面上正常工作。安装Node.js
NPM依赖项照常工作。但是,当使用在公司代理后面托管的持续集成服务器(例如Jenkins)时,构建Docker映像将失败。

Node.js NPM依赖关系

在构建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 Maven,Ruby,具有依赖关系的Docker映像

当构建Java,Ruby或Go容器时,会发生相同的情况,其中依赖关系位于整个公司代理服务器中的存储库服务器中。

知道您可以使用HTTP_PROXY环境变量配置Docker后,如何正确配置Docker以在CI环境中正确构建映像?


阅读 382

收藏
2020-06-17

共1个答案

小编典典

注意:Docker 1.9 可能 有助于解决此问题:

  • 问题14634 ”: 构建器-传递构建时参数 (例如HTTP_PROXY
  • PR 15182 ”: 支持在构建上下文中传递构建时变量

用法(建议):

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
2020-06-17