Dockerfile?ENV語法使用指南
Dockerfile 進行構(gòu)建鏡像
當使用 Dockerfile 進行構(gòu)建鏡像時,有時會需要設置容器內(nèi)的環(huán)境變量。
ENV 指令的格式
ENV <key>=<value> ...
ENV 指令將環(huán)境變量 <key> 設置為值 <value>。這個值將在構(gòu)建階段的所有后續(xù)指令的環(huán)境中,
也可以被替換使用在其他指令中。
該值將被解釋為其他環(huán)境變量,因此如果引號字符沒有轉(zhuǎn)義,它們將被刪除。像命令行解析一樣,引號和反斜杠可以用于在值中包含空格。
例如:
ENV MY_NAME="John Doe" ENV MY_DOG=Rex\ The\ Dog ENV MY_CAT=fluffy
ENV 指令允許多個 <key>=<value> ... 變量同時設置,下面的例子將在生成的鏡像中產(chǎn)生相同的結(jié)果:
ENV MY_NAME="John Doe" MY_DOG=Rex\ The\ Dog \
MY_CAT=fluffy當使用生成的鏡像運行容器時,使用 ENV 設置的環(huán)境變量將持久存在于容器內(nèi)。
你可以使用 docker inspect 查看這些值,并使用 docker run --env <key>=<value> 修改它們。
環(huán)境變量持久性
可能會導致意想不到的副作用。
例如,設置 ENV DEBIAN_FRONTEND=noninteractive 會改變 apt-get 的行為,并可能讓使用鏡像的用戶感到困惑。
如果只在構(gòu)建過程中需要環(huán)境變量,而不是在最終鏡像中,請考慮為單個命令設置一個值:
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 指令中設置多個環(huán)境變量,可能會造成混淆。例如,下面的代碼設置了一個值為“TWO= THREE=world”的環(huán)境變量(ONE):
ENV ONE TWO= THREE=world
支持這種替代語法為了向后兼容,但由于上述原因不鼓勵使用,可能會在將來的版本中刪除。
以上就是Dockerfile ENV語法使用指南的詳細內(nèi)容,更多關(guān)于Dockerfile ENV使用指南的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Docker之蘋果Mac安裝Docker的兩種方式小結(jié)
這篇文章主要介紹了Docker之蘋果Mac安裝Docker的兩種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04
Docker-compose進階配置之環(huán)境變量與配置隔離方式
本文系統(tǒng)講解了Docker-compose環(huán)境變量的使用方法,涵蓋配置隔離、多環(huán)境管理、變量優(yōu)先級及安全實踐,通過.env文件、變量替換和分層策略實現(xiàn)靈活、安全的配置方案,助力高效應對開發(fā)到生產(chǎn)環(huán)境的配置挑戰(zhàn)2025-08-08

