Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Dockerfile中传递标签的环境变量_Docker_Dockerfile_Devops - Fatal编程技术网

在Dockerfile中传递标签的环境变量

在Dockerfile中传递标签的环境变量,docker,dockerfile,devops,Docker,Dockerfile,Devops,我需要在Dockerfile中传递一个环境变量作为标签,我的Dockerfile如下所示: FROM nginx LABEL maintainer="blabla" ENV GROUP="default" #Checking if Label values can be set from ENV Variables LABEL group="${GROUP}" 下面的命令传递生成并运行docker file env变量: docke

我需要在Dockerfile中传递一个环境变量作为标签,我的Dockerfile如下所示:

FROM nginx
LABEL maintainer="blabla"
ENV GROUP="default"
#Checking if Label values can be set from ENV Variables
LABEL group="${GROUP}"

下面的命令传递生成并运行docker file env变量:

docker build -t nginx:test_label .
但在检查容器时,它将标签值设置为
default
,而不是
mygroup


我做错了什么?

LABEL
设置了图像级元数据,因此从该图像创建的所有容器的元数据都是相同的

如果要覆盖容器的标签,必须使用特殊的
--label
键指定:

docker run --label GROUP=mygroup nginx:test_label
当前,您正在运行期间将环境变量传递给容器。
Dockerfile
在构建阶段处理。如果要在图像中替换此变量,必须在生成时传递它:

docker build --build-arg GROUP=mygroup -t nginx:test_label .

docker映像构建和docker运行是两个不同的步骤。这里的问题是,您不能回到过去,使用应该在未来步骤中提供的值来构建映像。您正在将图像指示到
标签组=“${group}”
,这在生成时确实等于
默认值



稍后,当您运行容器并注入环境变量时,您的操作是正确的,但是在运行时没有执行指令告诉容器对该环境变量执行任何操作。

但是我想在
标签运行时中添加值,而不是在生成时添加值。但是标签是图像级元数据,不是容器级别。您打算如何使用它?谢谢您的快速回复@Sergei。我计划在普罗米修斯使用这个标签值作为过滤器。就像不同的环境会有不同的标签值一样,我可以在不涉及开发人员的情况下放置过滤器。希望这是有意义的。我明白了,我已经更新了关于如何在容器上设置标签的答案。
docker build --build-arg GROUP=mygroup -t nginx:test_label .