在构build时将环境variables传递给Dockerfile

是否可以在构build时将一个环境variables传递给dockerfile,例如,为了在构build过程中安装一些需要进行身份validation的文件。

这种方法将实现你想要的,但不build议秘密(秘密是困难的)。

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

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

您可以稍后在Dockerfile中使用此variables,如下所示:

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

然后,当你build立图片时,你可以将ARG传递给docker build

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

这将作为ARG “某件事”传递给Docker构build过程的“一些价值”。

你会得到的

 echo $some-thing "some-value" 

尽pipe你的ARG的值并没有被保留在最终图像中。 所以你不必担心密码等泄漏到最终的形象。 然而,Docker仍然不推荐它作为传递秘密的方式。

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

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

如果你不知道如何使用它,请查阅完整的Docker文档。

Dockerfile提供了入口点来实现这一点。 您可以创build一个shell脚本作为图像的入口点,这个shell脚本可以将一些命令作为参数。

这是我最近创build的一个例子。 入口点脚本将采用一个SSH密钥对作为参数,以在容器内部克隆一个私有的git仓库。