ENV 設定環境變數

格式有兩種:

  • ENV <key> <value>
  • ENV <key1>=<value1> <key2>=<value2>...

這個指令很簡單,就是設定環境變數而已,無論是後面的其它指令,如 RUN,還是執行時的應用,都可以直接使用使用這裡定義的環境變數。

ENV VERSION=1.0 DEBUG=on \
    NAME="Happy Feet"

這個例子中展示了如何自動換行,以及對含有空格的值用雙引號括起來的辦法,這和 Shell 下的行為是一致的。

定義了環境變數,那麼在後續的指令中,就可以使用這個環境變數。比如在官方 node 映像檔 Dockerfile 中,就有類似這樣的程式碼:

ENV NODE_VERSION 7.2.0

RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
  && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
  && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
  && grep " node-v$NODE_VERSION-linux-x64.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
  && tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1 \
  && rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
  && ln -s /usr/local/bin/node /usr/local/bin/nodejs

在這裡先定義了環境變數 NODE_VERSION,其後的 RUN 這層裡,多次使用 $NODE_VERSION 來進行作業訂製。可以看到,將來升級映像檔建構版本的時候,只需要更新 7.2.0 即可,Dockerfile 建構維護變得更輕鬆了。

下列指令可以支援環境變數展開: ADDCOPYENVEXPOSELABELUSERWORKDIRVOLUMESTOPSIGNALONBUILD

可以從這個指令清單裡感覺到,環境變數可以使用的地方很多,很強大。透過環境變數,我們可以讓一份 Dockerfile 製作更多的映像檔,只需使用不同的環境變數即可。

results matching ""

    No results matching ""