扩展Docker功能的工具,包括Docker图像的增量标记版本控制系统
dove-docker的Python项目详细描述
鸽子
Docker版本控制扩展
Docker的静态标记机制有没有给你安装了窃听器,并阻止你创建完美的、增量版本的Docker映像CD/CI?那么你可能会喜欢这个工具。
它是干什么的?
在配置文件中保留Docker标记模板和版本,并使用此工具包,可以在生成和标记图像时自动增加配置文件中存储的版本,在保存和部署图像时自动选择完整的标记。有什么用?好吧,你把它和git结合起来,你就得到了一个完美的cd/ci,没有任何硬编码标签。
安装
你需要docker(duh)、python3和pip3(python3)。只需克隆存储库并执行a
sudo -H pip install ./
在克隆的存储库中。
用法
和Docker一样,它也是一个命令行工具。在shell上执行dove
以显示所有帮助。
Usage: dove [OPTIONS] COMMAND [ARGS]...
A docker versioning extension that manages docker tags through a JSON
file, so that the user doesn't have to get into the hassle of writing and
updating image tags.
Maintained by: Intech A&I
For more info, visit:
https://github.com/intech-iiot/dove
Options:
--help Show this message and exit.
Commands:
build Build the docker image with saved tag
bump Just bump up the current version
get Get the current tag from the config
new Initialize a new dove config
push Push the image with tag saved in the config
reset Reset the version at position(s) to 0
save Save an image with the tag from the config
tag Tag another image with the saved tag
创建新配置
该工具需要一个dove.json
配置文件与dockerfile放在一起。此文件可以通过在shell上执行以下操作来创建:
dove new -t my-repo/my-image:{0}.{1}.{2} -i 3.2.1
-t
放置带有字符串位置参数的标记模板,-i
放置图像的初始版本。
查看当前标签
创建配置文件后,在配置文件所在的目录中运行以下命令:
dove get
这将显示上述配置的my-repo/my-image:3.2.1
。显然,版本是使用点(.)拆分的,并且在位置参数上替换组件。当然,您可以在其他命令中使用标记,例如:
docker image inspect $(dove get)
使用当前标记生成图像
为此,Dockerfile必须与Dove配置一起存在。执行A:
dove build
这将开始用配置文件中的当前标记构建docker映像。要提高版本,请执行a:
dove build --bump 0
这将增加版本中用于替换{0}位置参数的部分。类似地,要增加多个部分,请执行a:
dove build --bump 0 --bump 1
只是把标签贴上去
如果您倾向于自己使用docker cli命令,您仍然可以通过手动调整版本来使用配置及其版本调整功能。为此,请执行a:
dove bump --position 0
这将更新配置中的版本并返回stdout中的bumped up标记,该标记可以嵌套在docker命令本身中,例如
docker build -t $(dove bump --position 0) ./
或者您可以在之后直接获取标签
docker build -t $(dove get) ./
在标记中重置版本
您还可以通过以下方式在任何位置重置版本号:
dove reset --position 0
这将在位置0重置版本号,如果您遵循主要次要发布周期,这将非常有用,因为主要发布凹凸意味着次要发布版本重置为0。
< H2>标记现有图像 现有的图像可以用鸽子配置标记。为此,请执行a:dove tag -s source-image-tag
源图像将使用从当前上下文中的配置文件推断的标记进行标记
保存图像
要使用配置中推断的标记保存图像,请执行a:
dove save -f filename
按图像
如果标记格式包含远程repo,那么我还实现了一个push函数。为此,只需执行a:
dove push
Docker参数
可以通过--args
或-a
参数为dove build
和dove push
命令提供docker build
和docker push
命令行参数。例如:
dove build -a --pull
或
dove build -a --pull -a --no-cache -a --label=pickle-rick
是的,我知道,这是相当重复的,而且您只能使用长版本的=
,但是我不知道任何其他方法来分隔dove和docker命令行参数。至少总比什么都没有好。
替代标记格式
从0.0.3版开始,引入了用于维护替代标记格式的命令和参数。什么意思是dove.json
可以包含多个替换版本的标记格式。这是通过保留主标记格式和维护替换标记格式的名称-值对来完成的。这些标记可以通过-l
或--alt
标志在其他命令中使用。这对于多阶段构建非常有用。通过使用此选项,您可以为不同的版本创建具有相同版本的不同标记。
添加新的替代标记格式
在现有的^ {< CD2>}配置中添加一个新的备用标记,执行一个:
dove add-alt -l my-alt-tag my-repo/my-image:{0}.{1}.{2}
查看所有备降场
要查看添加到配置文件中的备用项,请执行a:
dove alts
删除替代标记格式
通过执行a:
dove remove-alt -n my-alt-tag
在其他命令中使用替代标记
使用配置文件中的标记的任何命令都有一个现有的标志{{CD14>}或^ {CD15>},用于指定要使用的替换的名称。例如,要使用备用标记生成图像,请执行a:
dove build -l my-alt-tag
贡献
我不是一个严格意义上的python程序员,我是作为一个辅助项目来做的,所以我可以制作一些非常精简的cd/ci。如果你愿意为我的这一点贡献我将不胜感激。