在构建时是否可以向Dockerfile传递环境变量,例如,在构建过程中安装一些需要验证才能获取的文件。
在构建时是否可以向Dockerfile传递环境变量,例如,在构建过程中安装一些需要验证才能获取的文件。
这种方法可以实现你想要的功能,但不建议用于机密信息(机密信息很难处理)。
你可以使用构建参数。其思路是在Dockerfile中放置一个ARG
指令,然后可以在Dockerfile内部引用它。
FROM alpine:3.3
ARG some-thing=<optional default value>
...
RUN echo $some-thing
...
当你构建镜像时,你可以将ARG
传递给docker build
命令,如下:
$ docker build --build-arg some-thing=some-value .
这将把“some-value”作为ARG
“some-thing”传递到Docker构建过程中。
您将获得
echo $some-thing
"some-value"
ARG
值不会在最终镜像中保留。所以你不必担心密码等机密信息泄露到最终镜像中。但是,Docker仍然不建议将其作为传递机密信息的一种方式。docker build --help
,它会告诉你它接受哪些参数。如果你仔细查看,你会发现:--build-arg=[] Set build-time variables
Dockerfile提供了Entrypoint来实现这一点。您可以创建一个作为镜像入口点的shell脚本,该shell脚本可以将某些命令作为参数。