Jenkinsfile - 如何将构建参数传递给Docker

10
根据这个链接,我们可以按以下方式传递镜像名称和Dockerfile位置来构建一个镜像。
docker.build("my-image:${env.BUILD_ID}", "-f ${dockerfile} ./dockerfiles")

我想将代理设置传递给构建命令,是否有类似于我们可以在简单的Docker命令中传递的方式来传递它。
docker build -t my-image --build-arg HTTP_PROXY=http://192.168.0.1:3128 ./dockerfiles

1
这应该按照你现在的方法可以工作。 - Matt Schuchard
@MattSchuchard,我在cmd手动构建时可以工作,但无法在从Jenkinsfile构建镜像时传递代理设置。 - Dhananjay
那么 docker.build("my-image:${env.BUILD_ID}", "HTTP_PROXY=http://192.168.0.1:3128 -f ${dockerfile} ./dockerfiles") 不起作用吗? - Matt Schuchard
1
不,它不起作用。它会抛出以下错误。WorkflowScript: 48: Method calls on objects not allowed outside "script" blocks. @ line 48, column 8. docker.build("$registry/errorhandler:${env.BUILD_NUMBER}", "HTTP_PROXY=http://192.168.0.1:3128 -f Dockerfile ./errorhandler")``` - Dhananjay
这听起来像是Docker插件的一个bug。 - Matt Schuchard
5个回答

14

这个对我来说有效:

def image = docker.build("myregistry.io/firstkey/secondkey/image:2.2.0-$BUILD_NUMBER", "--build-arg http_proxy=http://www-proxy.mycompany.com:80 --build-arg https_proxy=http://www-proxy.mycompay.com:80 --network host -f Dockerfile .")

4
这个方法的文档在哪里?我很难在Jenkins.io文档中找到... - JesusIniesta
@JesusIniesta https://opensource.triology.de/jenkins/pipeline-syntax/globals - Pants

7

在第二个参数中添加.即可。

docker.build("my-image:${env.BUILD_ID}", "--build-arg HTTP_PROXY=http://192.168.0.1:3128 .")


3
docker.build("my-image:${env.BUILD_ID}", "--build-arg HTTP_PROXY=http://192.168.0.1:3128", "-f ${dockerfile} ./dockerfiles")

0

0

你需要像这样传递它,用字符串给出之间的空格

docker.build "my-image:${env.BUILD_ID} -f ${dockerfile} ./dockerfiles"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接