您好,登錄后才能下訂單哦!
Dockerfile中 ENV如何使用,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
ENV
指令的格式如下:
ENV <key>=<value> ...
ENV
指令將環境變量 <key>
設置為值 <value>
。這個值將在構建階段的所有后續指令的環境中, 也可以被替換使用在其他指令中。 該值將被解釋為其他環境變量,因此如果引號字符沒有轉義,它們將被刪除。像命令行解析一樣,引號和反斜杠可以用于在值中包含空格。
例如:
ENV MY_NAME="John Doe" ENV MY_DOG=Rex\ The\ Dog ENV MY_CAT=fluffy
ENV
指令允許多個 <key>=<value> ...
變量同時設置,下面的例子將在生成的鏡像中產生相同的結果:
ENV MY_NAME="John Doe" MY_DOG=Rex\ The\ Dog \ MY_CAT=fluffy
當使用生成的鏡像運行容器時,使用 ENV
設置的環境變量將持久存在于容器內。 你可以使用 docker inspect
查看這些值,并使用 docker run --env <key>=<value>
修改它們。
環境變量持久性可能會導致意想不到的副作用。 例如,設置 ENV DEBIAN_FRONTEND=noninteractive
會改變 apt-get
的行為,并可能讓使用鏡像的用戶感到困惑。
如果只在構建過程中需要環境變量,而不是在最終鏡像中,請考慮為單個命令設置一個值:
RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y ...
或者使用 ARG
,它不會在最終鏡像中持久存在:
ARG DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y ...
替代語法
ENV
指令還允許另一種語法ENV <key> <value>
,省略了中間的等號。例如:ENV MY_VAR my-value這種語法不允許在一條
ENV
指令中設置多個環境變量,可能會造成混淆。例如,下面的代碼設置了一個值為“TWO= THREE=world”的環境變量(ONE):ENV ONE TWO= THREE=world支持這種替代語法為了向后兼容,但由于上述原因不鼓勵使用,可能會在將來的版本中刪除。
看完上述內容,你們掌握Dockerfile中 ENV如何使用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。