TeamCity On-Premises 2025.03 Help

Docker

Docker 构建步骤允许在您的构建中启动 构建推送tag Docker命令。

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

  1. 打开 项目设置并导航到 连接设置选项卡。

  2. 向您的项目添加一个新的 Docker 或 Podman 连接

  3. 在您的 构建配置设置中,使用上一步创建的连接配置 Docker 注册表连接 构建功能。

如果您的 VCS 仓库中存在一个 Dockerfile ,并且您基于此仓库创建了一个 TeamCity 项目,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 运行器添加到您的构建配置中。

  2. 将其 Docker 命令 选项切换为“other...”。

  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月 21日