TeamCity On-Premises 2024.07 Help

Docker

Docker 构建运行程序允许在您的构建中启动 构建推送tag Docker命令。

如果您需要将新构建的镜像推送到注册表,您可以通过配置 Docker Support 构建功能来授权 Docker 或 Podman 注册表,具体操作如下:

  1. 在您的项目设置中,从侧边栏选择 Connections ,并按照 配置与 Docker 的连接 中的指示,为您的项目添加新的 Docker 或 Podman 连接。

  2. 在您的构建配置设置中,按照 Docker 支持 中的说明配置 Docker 支持 构建功能,添加在上一步中创建的连接。

如果您的 VCS 仓库中存在一个 Dockerfile,并且您基于此仓库创建了一个 TeamCity 项目,TeamCity 将 自动检测它,并提供使用此运行程序创建构建步骤的选项。

通用设置

此运行器是 TeamCity-Docker / Podman 集成工具集的一部分。 请参阅此文档文章,了解有关软件要求、支持的环境以及此集成的其他常见方面的信息: 将 TeamCity 与容器管理器集成

可用的步骤执行策略在 这里 描述。

Docker 命令

根据选定的命令,运行器提供以下设置:

命令

形参

描述

构建

Dockerfile 源码

根据所选的源,下面的设置会有所不同。 可用选项包括 FileURLFile content

文件路径

适用于 File 源类型:

指定到 Dockerfile 的路径。 路径应相对于 build checkout directory

上下文文件夹

适用于 File 源类型:

docker build 指定 上下文。 如果为空,则将使用 Dockerfile 的父目录。

文件的 URL

适用于 URL 源类型:

URL可以引用三种资源之一:Git仓库、预打包的 tarball 上下文和普通文本文件。 参见 Docker 文档 获取详细信息。

文件内容

适用于 File Content 源类型:

您可以在字段中输入 Dockerfile 的内容。

镜像平台

选择 <Any>(默认),Linux,或 Windows。

镜像名称:标签

提供一个换行分隔的镜像名称: 标签列表。

构建 命令的附加参数

docker build 命令提供额外的参数。 参阅 Docker 文档 了解详情。

推送

推送后从代理中移除镜像

如果选中,TeamCity 将在步骤结束时删除带有 docker rmi 的镜像。

镜像名称:标签

提供一个换行分隔的镜像名称: 标签列表。

其他

命令名称

Docker 子命令,如 推送tag。 对于 run 命令,请使用 容器包装器

工作目录

如果 构建工作目录签出目录 不同,您需要指定构建工作目录。

命令的附加参数

将会传递给 docker 命令的额外参数。

通过 sudo 运行 Docker

您可以通过 sudo 在 TeamCity 代理上强制启动 Docker 命令。 在 构建代理配置文件 或代理的系统属性中添加 teamcity.docker.use.sudo=true 设置。 在代理启动时,TeamCity 代理日志将告知您, sudo 前缀用于运行 Docker 命令。

要为 sudo 命令配置 sudoers 文件,请按照以下方式使用 visudo

buildagentuser ALL=(ALL) NOPASSWD:SETENV:<full_path_to_docker>

我们建议从 sudoers 文件中删除(或注释) 默认需要tty 行,以防止 docker login 相关的问题

构建多架构镜像

其他...命令选项允许您执行任何自定义 docker ... 命令。 例如,您可以调用 buildx 命令来构建多架构镜像。

  1. 将新的 Docker runner 添加到您的构建配置中。

  2. 将其 Docker command 选项切换为“其他…”。

  3. 命令名称 字段中输入“buildx”,在 命令的其他参数 字段中输入“create --use”。 TeamCity 会将这些字段组合成一个 docker buildx create --use 命令。

  4. 对于每个新命令,重复步骤 1~3。 例如,您可能想要添加额外的节点( docker buildx create --append --name mybuild <context_name> )或调用 docker buildx build <path> --platform linux/amd64,linux/arm64 来开始构建并生成图像。

最后修改日期: 2025年 3月 28日