Docker构建参数

6
如何将参数传递到dockerfile中?
假设我有以下dockerfile:
FROM    ubuntu:14.04

MAINTAINER Karl Morrison

sudo do-something-here myVarHere

我想按照以下方式构建文件,例如:
docker build basickarl/my-image-example /directory/of/my/dockerfile "my string to be passed to myVarHere here!"
2个回答

7

Docker有ARG命令,您可以在此处使用它。

FROM    ubuntu:14.04

MAINTAINER Karl Morrison

ARG myVarHere

RUN do-something-here myVarHere

然后使用--build-arg构建:

docker build --build-arg myVarHere=value

5
对于那些在构建参数方面遇到困难的人,上述内容基本正确,但是在RUN命令中访问这些参数时,它们会被视为环境变量。你可以在此处查看相关文档:https://docs.docker.com/engine/reference/commandline/build/#set-build-time-variables---build-arg 和 https://docs.docker.com/engine/reference/builder/#environment-replacement。然后,上面的RUN命令将变为:RUN do-something-here $myVarHere - Alex Barry
构建文件中的行“RUN do-something-here myVarHere”实际上应该是“RUN do-something-here ${myVarHere}”吗? - majorgear

2
我们有类似的需求,并编写了一个相对简单的脚本来实现它:
我们创建了一个名为`dockerfile_template`的文件,在其中使用变量,就像您描述的那样。该脚本获取该文件,执行字符串替换并将其复制到`dockerfile`(没有`_template`)中,然后调用`docker build dockerfile`。
效果很好。也非常适用于未来的需求。
更新:
放弃上述方法。使用`build-arg`(这里)。

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