使用packer构建镜像时可以动态设置docker镜像LABEL为git commit值吗?

问题描述 投票:0回答:1

我正在考虑将 docker 镜像构建从使用 bash 包装器脚本 + Dockerfiles 过渡到使用打包器。该脚本执行 git 克隆,然后将脚本中的变量设置为 git 提交(例如

gitCommit=$(git log -1 --pretty="format:%h %s")
)。然后,该变量作为构建参数传递给 docker build 命令,并应用于 Dockerfile 中的 LABEL。

我希望继续能够以这种方式动态设置标签(以及可能的其他内容),但我在打包器文档中没有看到任何支持此操作的内容。

此功能是否可行,或者这是打包程序可接受的缺点?

谢谢!

我已经阅读了有关变量、局部变量、source.changes(其中设置 LABEL 值)和配置程序的打包程序文档。我还成功构建了图像而无需设置标签,因此构建可以正常工作。

docker cicd packer hashicorp-packer
1个回答
0
投票

我不知道Packer是否可以做到这一点,但是解决你的根本问题,可以在创建图像后对其进行修改。我知道的两个工具是 crane(来自 Google)和 regctl(来自我自己)。

crane mutate --label "gitCommit=$(git log -1 --pretty="format:%h %s")" $image

regctl image mod --replace --label "gitCommit=$(git log -1 --pretty="format:%h %s")" $image

请注意,这确实会更改图像摘要,因此在修改图像之前,您需要避免依赖于此的任何内容(例如图像签名)。

© www.soinside.com 2019 - 2024. All rights reserved.