自动化构建/标记/推送多个Docker镜像
项目描述
Docker构建自动化
概述
此包提供了一个脚本,该脚本按照某个目录中“docker_images.txt”文件的顺序构建多个Docker容器。此文件使用制表符分隔,以“#”开头的行将被忽略。
“docker_images.txt”中的每一行非注释行都具有以下格式
label path/to/Dockerfile comma,separated,options,if,desired
(各部分之间可以有任意空白)。默认情况下,将通过在Dockerfile的父目录中运行 docker build -t label -f Dockerfile . 来构建镜像。在Dockerfile之后添加选项 base_directory_build 以指定应使用包含“docker_images.txt”的目录来构建镜像
docker build -t label -f path/to/Dockerfile .
。如果默认行为可以接受,则每一行的第三个制表符分隔的部分可以省略。
Docker镜像将按顺序构建,因此镜像可以引用先前镜像的结果,例如
image-base base/Dockerfile image-dev dev/Dockerfile
其中 dev/Dockerfile 包含
FROM image-base ...
由于镜像无条件使用最新标签构建,因此首先构建,然后根据需要标记时间戳,无需修改“Dockerfile”即可创建“发布”镜像。
容器构建脚本会检查是否存在未初始化的Git子模块,默认情况下,如果发现任何子模块,将拒绝构建。如果需要,可以覆盖此行为(见下文)。
构建选项 write_git_version 接受一个文件路径参数,将 git describe --dirty --always --abbrev=12 的输出写入到该路径。例如
image_label path/to/Dockerfile write_git_version=src/revision.txt
跨平台构建
构建选项 platforms 接受一个由 & 分隔的平台列表,这些平台将被直接传递给 docker build --platforms=...,其中 & 被替换为 , 在 docker build 调用中。请注意,这可能需要使用较新的 buildx 工具,以取代传统的 docker build。
用法
此脚本提供的命令行入口点是 build_docker_images。默认情况下,镜像将被打上 :latest 标签,附加到基础镜像名称。
选项
- --tag-timestamp
除了将镜像打上 latest 标签外,还会以 YYYYMMDD-HHmmss 格式打上时间戳标签。所有 docker_images.txt 中的镜像都会打上相同的时间戳标签。可以与 --tag=tag_name 结合使用。
- --tag=tag_name
除了将镜像打上 latest 标签外,还会打上提供的标签名。所有 docker_images.txt 中的镜像都会打上相同的标签名。可以与 --tag-timestamp 结合使用。
- --push
将所有构建的容器推送到Docker Hub,标签为 latest,并且具有通过 --tag-timestamp 或 --tag=tag_name 指定的任何附加标签。
- --ignore-missing-submodules
如果 git submodule 报告至少有一个子模块未初始化,则允许构建Docker容器。
- --pretend
以模拟模式运行:实际上不执行任何操作(构建、打标签、推送)。
要求
此脚本需要Python 3.6或更高版本。Docker用于构建/打标签/推送镜像(版本不重要)。
项目详情
multi_docker_build-0.7.2-py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | ef42264e3f76b2b8bfdd8a40077995622d55d6c69fa5b4030f0562f09fb7481c |
|
MD5 | fa8d659ae629ebbdca30643404cdba41 |
|
BLAKE2b-256 | cb41dd3e6ca2c4d5ea0fa285f5322ca00823886aab6db066f96ec8ae42f89978 |