在Dockerfile中为LABEL传递ENV变量

时间:2020-07-21 14:45:06

标签: docker dockerfile devops

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

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

以下命令可传递构建并运行docker文件的env变量:

docker build -t nginx:test_label .
docker run -d -e GROUP="mygroup" nginx:test_label

但是在检查容器时,它给我的标签值为default而不是mygroup

我在做什么错了?

2 个答案:

答案 0 :(得分:1)

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

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

docker run --label GROUP=mygroup nginx:test_label

当前,您正在运行期间将环境变量传递给容器。 Dockerfile在构建阶段进行处理。如果要在图像中替换此变量,则必须在构建时传递它:

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

答案 1 :(得分:0)

泊坞窗映像构建和泊坞窗运行是两个不同的步骤。这里的问题是,您无法及时返回并使用应该在将来的步骤中提供的值来构建映像。您正在将图像指示到LABEL group="${GROUP}",该图像在构建时确实等于default

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