我有一个jenkins服务器监视git repo并在代码更改时构建docker镜像..git目录作为构建的一部分被忽略,但我想将git commit hash与图像相关联,以便我确切地知道用于创建它的代码版本并检查图像是否是最新的.
显而易见的解决方案是使用"application-name-branch-name:commit-hash"之类的标签来标记图像,但是对于许多开发分支我只想保留最后的良好构建,添加更多标记将清理旧版本更难(而不是在构建图像时使用jenkins构建编号,然后重新标记为:最新并取消构建编号)
另一种可能性是标签,但虽然这看起来很有希望,但事实证明它们更复杂.
我可以看到直接将标签应用于图像的唯一方法是Dockerfile,它不能使用构建环境变量,因此我需要使用某种模板来生成自定义Dockerfile.
应用标签的另一种方法是使用一些简单的命令(例如bash)从图像中启动容器,并将标签作为docker run arguments传递.然后可以将容器作为新图像提交.这有一个令人遗憾的副作用是使图像的默认命令与标签容器一起使用(在这种情况下是bash),而不是原始Dockerfile中的任何内容.对于我的应用程序,我无法使用实际命令,因为它将开始更改应用程序状态.
这些似乎都不是特别理想 - 还有其他人找到了更好的方法吗?
docker ×1