跳转到主要内容

自动化构建/标记/推送多个Docker镜像

项目描述

https://img.shields.io/badge/code%20style-black-000000.svg

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 (8.1 kB 查看散列)

上传时间 Python 3

支持