Git 在Docker容器中作为环境变量访问标记

Git 在Docker容器中作为环境变量访问标记,git,docker,Git,Docker,我希望能够从容器中访问用于构建docker容器的标记/修订。是否有一种简单的方法可以在构建过程中将标记/修订作为环境变量显示 例如,我希望容器中运行的API了解其当前版本。如果没有docker,我通常会使用git将修订版写入API可以访问的文件中,但这似乎不是“docker方式”。它不是API,但您始终可以使用run命令的-e传递标记。一个简短的例子$docker run-it-e mytag=abc123 ubuntu:latest env|grep mytag mytag=abc123 因此

我希望能够从容器中访问用于构建docker容器的标记/修订。是否有一种简单的方法可以在构建过程中将标记/修订作为环境变量显示


例如,我希望容器中运行的API了解其当前版本。如果没有docker,我通常会使用git将修订版写入API可以访问的文件中,但这似乎不是“docker方式”。

它不是API,但您始终可以使用run命令的
-e
传递标记。一个简短的例子
$docker run-it-e mytag=abc123 ubuntu:latest env|grep mytag
mytag=abc123

因此,在您的容器内,mytag将包含容器的标签

这现在可以通过docker构建参数实现


docker build--build arg TAG=v0.0.1。

这与我要查找的内容非常接近,但仍然不能强制执行在构建过程中传递给-t的内容在运行时在容器内部出现。我希望我的自动生成能够在生成时将此值注入容器中。您也可以在Dockerfile中有一行
ENV mytag xxx
,然后在您正在运行的容器中,您将有一个来自生成时间的环境变量,我也想到了这一点,但这需要我的生成来编辑我的Dockerfile。这不是世界末日,但我很惊讶没有一种简单的方法可以从容器中访问关于容器的信息。有趣的是,不能保证标记与图像标记相同。事实上,使用
docker标记构建后,可以很容易地更改标记。实际上需要的是一个运行时环境变量,docker将其设置为
docker run
命令的一部分,此时容器使用的标记是已知的。