ENV 和 ARG 指令
ENV
ENV <key> <value>
ENV <key>=<value> ...
ENV
指令将环境变量 <key>
设置为该值。该值将在所有后代Dockerfile 命令的环境中,并且可以在许多内联中替换。
ENV
指令有两种形式。第一种形式 ENV <key> <value>
将单个变量设置为一个值。第一个空格后的整个字符串将被视为 <value>
- 包括空格和引号等字符。
第二种形式 ENV <key>=<value> ...
允许一次设置多个变量。请注意,第二种形式在语法中使用等号(=),而第一种形式则不然。与命令行解析一样,引号和反斜杠可用于在值内包含空格。
例如:
ENV myName="John Doe" myDog=Rex\ The\ Dog \
myCat=fluffy
和
ENV myName John Doe
ENV myDog Rex The Dog
ENV myCat fluffy
将在最终容器中产生相同的净结果,但第一种形式是首选,因为它产生一个缓存层。
当从生成的图像运行容器时,使用 ENV
设置的环境变量将保持不变。你可以使用 docker inspect 查看值,并使用 docker run --env <key>=<value>
更改它们。
ARG
如果你不想保留设置,请改用 ARG
。ARG
将仅在构建期间设置环境。例如,设置
ENV DEBIAN_FRONTEND noninteractive
当 apt-get
用户通过 docker exec -it the-container bash
在交互式环境中进入容器时,可能会混淆基于 Debian 的图像。
相反,使用:
ARG DEBIAN_FRONTEND noninteractive
你也可以选择仅使用以下命令为单个命令设置值:
RUN <key>=<value> <command>