我需要在构建容器期间设置代理环境变量。但是,当容器运行时,不能设置代理环境变量。
我在Dockerfile中使用了ENV命令来设置变量。但是这会在构建和运行容器期间设置变量。据我所知,Dockerfile不支持ENV命令的未设置。
如何为构建指定环境而不是为运行指定环境?
答案 0 :(得分:1)
您需要使用的是构建arg,它不会保留在图像中。文档部分Set build-time variables (--build-arg)准确描述了您的需求:
您可以在Dockerfile中使用ENV指令来定义变量 值。这些值在构建的图像中保留。但是,经常 持久性不是你想要的。用户想要指定变量 不同,取决于他们在哪个主机上建立图像。
一个很好的例子是http_proxy或用于提取的源版本 中间文件。 ARG指令允许Dockerfile作者定义 用户可以使用--build-arg标志在构建时设置的值:
FROM alpine
ARG hello
RUN env # This will output hello=world
CMD env # When running the container, there is not env variable "hello"
docker build --build-arg hello=world -t test . # This will output hello=world env variable
docker run test # There is no env variable "hello"
如上所示,hello
仅在构建时显示为env变量。它不会保留在图像中,因此不会显示在docker run
答案 1 :(得分:0)
为什么不将变量设置为空或为空?它仍然存在,但在运行时
中没有你可以考虑的值