来自可执行版本的 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 版本相同的构建参数值
您在容器中安装的软件,您可以确保
安装的版本和标签匹配。
我正在尝试使用 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 版本相同的构建参数值 您在容器中安装的软件,您可以确保 安装的版本和标签匹配。