Dockerfile(7) - ENV 指令詳解


ENV

定義環境變量

ENV <key>=<value> ...

# 但只能設置一個環境變量
ENV MY_VAR my-value

 

使用環境變量

通過 ENV 指令可以聲明環境變量,可以在以下指令中使用環境變量

  • ADD
  • COPY
  • ENV
  • EXPOSE
  • FROM
  • LABEL
  • STOPSIGNAL
  • USER
  • VOLUME
  • WORKDIR
  • ONBUILD

 

使用環境變量的方式

有兩種

  • $variable_name
  • ${variable_name}

 

${variable_name} 語法還支持以下指定的一些標准 bash 修飾符

  • ${variable:-word}:表示如果設置了 variable,那么結果就是那個值;如果未設置變量,則結果將是 word
  • ${variable:+word}:表示如果設置了 variable,則結果為 word,否則為空字符串
  • 在所有情況下, word 可以是任何字符串,包括額外的環境變量

 

簡單栗子

FROM busybox
ENV FOO=/bar
WORKDIR ${FOO}   # WORKDIR /bar
ADD . $FOO       # ADD . /bar
COPY \$FOO /quux # COPY $FOO /quux

  

覆蓋環境變量的栗子

ENV abc=hello
ENV abc=bye def=$abc
ENV ghi=$abc

def 的值是 hello,ghi 的值是 bye

 

注意

  • 當容器從生成的鏡像運行時,使用 ENV 設置的環境變量將持續存在
  • 可以使用 docker inspect 查看值,並使用 docker run --env <key>=<value> 更改它們

 

實際栗子

dockerfile

FROM nginx
EXPOSE 80
ENV test=test1234

 

構建鏡像,啟動容器,inspect 查看

docker build -f test.dockerfile -t test2 .

docker run -it -d -P test2

docker inspect 120b

通過 ENV 設置的環境變量是會保留到容器中的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM