Dockerfile ENV 使用指南

在这里插入图片描述
当使用 Dockerfile 进行构建镜像时,有时会需要设置容器内的环境变量。

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

支持这种替代语法为了向后兼容,但由于上述原因不鼓励使用,可能会在将来的版本中删除。

原文链接:https://goworker.cn/posts/dockerfile-env/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K8sCat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值