来自可执行版本的 Dockerfile LABEL

Dockerfile LABEL from executable version

我正在尝试使用 LABEL 命令在我的 Dockerfile 中用我的应用程序版本标记我的 docker 图片。

我可以使用以下内容将版本写入文件:

RUN /opt/app/foo --version > /var/app-version

/var/app-version 现在将包含一个纯文本文件,其中包含应用程序版本,可以在我的标签中使用。

现在我需要一种方法将其放入 docker variable/arg 中,这样我就可以执行如下操作:

LABEL application_version=$APP_VERSION

或者也许有另一种方法可以达到同样的目的?

您将无法使用容器内安装的内容动态生成的内容来设置标签。您可以使用构建参数从主机环境动态设置标签,如下所示:

FROM docker.io/alpine:latest

ARG application_version=1
LABEL application_version=${application_version}

如果我这样构建容器:

docker build -t myimage .

我会有:

$ docker inspect image myimage | jq '.[0].Config.Labels'
{
  "application_version": "1"
}

而如果我这样构建容器:

docker build --build-arg application_version=3 -t myimage .

我会有:

$ docker inspect image myimage | jq '.[0].Config.Labels'
{
  "application_version": "3"
}

如果您使用与 select 版本相同的构建参数值 您在容器中安装的软件,您可以确保 安装的版本和标签匹配。