Docker:为环境标记图像时的最佳做法是什么
我有多个环境.它们是debug,dev和prod.我想通过最新的dev(最新)或dev(1.1版)或prod(最新版)来引用图像.我将如何标记构建和推送? 我的第一个想法是为每个环境debug,dev和prod创建单独的存储库.但我开始怀疑我是否可以只用一个存储库来做到这一点.如果它可能与一个容器有关,那么构建和推送时的语法是什么? 最佳答案
这对我和我的团队最有效,我推荐它:
我建议在所有环境中为每个项目设置一个repo,它更易于管理.特别是如果你有微服务,那么你的项目由多个微服务组成.每个项目每个env管理一个repo是一件痛苦的事. 例如,我有一个用户api. 我们在CI / CD服务中创建一个名为$DOCKER_TAG的env变量,并在创建构建时设置它,如下所示: DOCKER_TAG:$(日期%Y%m%d).$BUILD_NUMBER =>这是在bash. 其中$BUILD_NUMBER先前由触发CI / CD运行时正在运行的构建设置.例如,当我们合并PR时,会触发构建,因为构建号. 1,所以$BUILD_NUMBER:1. 使用时生成的标签如下所示:20171612.1 为什么这种格式? >它允许我们使用a在不同的环境中部署相同的标签 因此,当我们合并时,我们创建一个单独的构建.然后根据需要将该构建部署到不同的环境.我们不为每个环境创建独立的构建.我们会跟踪在哪里部署的内容. 如果在具有特定标记的环境中存在错误,我们会在此条件下提取此类标记,构建和解决问题并重现问题.如果我们发现问题,我们在标签20171612.1中有内部版本号,因此我们知道版本号. 1有问题.我们检查我们的CI / CD服务,它告诉我们最新的提交.我们从git和debug中查看提交哈希并修复问题.然后我们将其部署为修补程序,例如. 如果您还没有CI / CD,并且您手动执行此操作,只需手动设置该格式的标记(几乎按原样键入完整字符串)而不是生成编号,请使用commit short git hash (如果你使用的是git): 20170612.ed73d4f 因此,您知道什么是最新的提交,以便您可以解决特定图像的问题,并映射回代码以根据需要创建修复. 您还可以为映射到代码版本的标记定义任何其他后缀,以便您可以轻松进行故障排除(例如,如果您使用的话,请映射到git标记). 尝试一下,根据需要进行调整,并为您和您的团队做最好的事情.有很多方法可以解决标记问题.我们尝试了很多,到目前为止这是我们的最爱. 希望这有帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |