在构建期间将环境变量传递给Dockerfile

时间:2016-07-27 03:38:13

标签: docker

是否可以在构建时将环境变量传递给dockerfile,例如,为了在构建期间安装一些需要身份验证才能获取的文件。

3 个答案:

答案 0 :(得分:4)

这种方法可以达到你想要的效果,但不建议用于保密(秘密很难)。

您可以使用Build Args。我们的想法是在Dockerfile中放置一个ARG指令,然后在Dockerfile中引用它。

FROM alpine:3.3
ARG some-thing=<optional default value>

您可以稍后在Dockerfile中使用此变量,如:

...
RUN echo $some-thing
...

然后,当您构建图片时,可以将ARG传递给docker build,如:

$ docker build --build-arg some-thing=some-value .

这将通过“某些价值”&#39;作为ARG&#39; some-thing&#39;进入Docker构建过程。

你得到

echo $some-thing
"some-value"

虽然您的ARG的值仍保留在最终图片中。因此,您不必担心密码等泄漏到最终图像中。然而,Docker仍然不建议将其作为传递秘密的方式。

答案 1 :(得分:0)

如果您运行docker build --help,它会告诉您它接受的参数。如果你看一下,你会发现:

--build-arg=[]                  Set build-time variables

如果您无法解决如何使用它,请参阅完整的Docker文档。

答案 2 :(得分:-1)

Dockerfile提供Entrypoint来实现这一目标。您可以创建一个shell脚本作为映像的入口点,这个shell脚本可以将一些命令作为参数。

Here是我最近创建的一个示例。 entrypoint script将使用SSH密钥对作为参数,以克隆容器内的私有git存储库。