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

如果你不想保留設定,請改用 ARGARG 將僅在構建期間設定環境。例如,設定

ENV DEBIAN_FRONTEND noninteractive

apt-get 使用者通過 docker exec -it the-container bash 在互動式環境中進入容器時,可能會混淆基於 Debian 的影象。

相反,使用:

ARG DEBIAN_FRONTEND noninteractive

你也可以選擇僅使用以下命令為單個命令設定值:

RUN <key>=<value> <command>