在构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仓库。
- 由IBM Containers报告的IBM-Bluemix:image压缩 – 小于本地Docker引擎
- Redis服务器docker容器连接到另一个docker容器只能使用绑定所有
- 只用Dockerfile中的其他更改重build相同的Docker镜像
- 如何将主机目录挂载为mongodb容器的容器卷?
- 如何在单个节点上使用docker创build虚拟群集?
- 在docker-compose中使用docker卷,而不将卷数据复制到容器
- 为wurstmeister / kafka docker图像定义Zookeeper znode
- 无法在Docker Entrypoint命令中使用variables
- 你可以使用.env文件作为独立的Dockerfile吗?