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>