是否可以在构建时将环境变量传递给dockerfile,例如,为了在构建期间安装一些需要身份验证才能获取的文件。
答案 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存储库。