Dockerfile(7) - ENV 指令详解

简介: 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

image.png

通过 ENV 设置的环境变量是会保留到容器中的

相关文章
|
NoSQL 关系型数据库 MySQL
Dockerfile(9) - ENTRYPOINT 指令详解
Dockerfile(9) - ENTRYPOINT 指令详解
734 0
|
缓存 Linux Go
Dockerfile(11) - COPY 指令详解
Dockerfile(11) - COPY 指令详解
2517 0
|
2月前
|
JSON 物联网 Shell
Dockerfile指令详解
Dockerfile指令详解
75 0
|
12月前
|
数据安全/隐私保护 Docker 容器
45-Dockerfile-ARG/ENV指令
45-Dockerfile-ARG/ENV指令
|
12月前
|
Docker 容器
48-Dockerfile-CMD/ENTRYPOINT指令
48-Dockerfile-CMD/ENTRYPOINT指令
Dockerfile(3) - WORKDIR 指令详解
Dockerfile(3) - WORKDIR 指令详解
881 0
|
Docker 容器
Dockerfile文件中CMD指令与ENTRYPOINT指令的区别
本文是博主学习docker 制作镜像指令的记录,希望对大家有所帮助
168 0
Dockerfile文件中CMD指令与ENTRYPOINT指令的区别
|
缓存 Linux Go
Dockerfile(10) - ADD 指令详解
Dockerfile(10) - ADD 指令详解
1683 0
Dockerfile(1) - FROM 指令详解
Dockerfile(1) - FROM 指令详解
544 0
|
存储 应用服务中间件 调度
Dockerfile(12) - HEALTHCHECK 指令详解
Dockerfile(12) - HEALTHCHECK 指令详解
346 0
Dockerfile(12) - HEALTHCHECK 指令详解