自动化运维:构建Docker镜像

65 阅读3分钟

Buddy让开发人员可以使用来自Git存储仓代码轻松构建和测试Docker镜像。设置以Docker为中心的流水线与在服务中设置任何其他类型的交付一样简单。

首先,您需要指定镜像应该基于哪个存储仓。 Buddy与GitHub、Bitbucket和GitLab进行了原生集成,但您也可以连接任何其他私有存储仓或Buddy自带的Git存储仓:

新建项目

成功同步存储仓后,您可以添加流水线。可以通过三种方式触发流水线:事件(自动)、手动(点击触发)和定时(按时间间隔):

新添流水线

第二件事是设置将运行构建的分支、标签或 PR:

流水线配置

下一步是添加将对您的应用程序进行docker化的操作。从操作列表中Docker区域选择“构建镜像”:

添加Docker操作

在操作相关信息中,指定Dockerfile位置和将在其关联工件中构建镜像的目录(可选):

Docker操作配置

构建私有镜像

如果镜像为私有(例如:来自:my-registry.com/buddy/my-image:latest)并且需要登录注册中心,您可以在“选项”选项卡中配置访问数据。Buddy与Docker Hub、Google GCR和Amazon ECR完美集成。 除此之外,您可以使用任何其它私有注册中心。

选择Docker注册中心

构建多构建Docker镜像

从操作列表中Docker区域选择“构建镜像”:

多构架

在操作"设置"之下选定“平台目标:

选择多构架

Docker镜像持续交付

使用Buddy,您基本上可以自动化任何类型的DevOps流程。例如:您可以创建一个流水线,该流水线将在每次推送到选定分支时执行以下任务 —— 只需将新操作添加到现有的操作即可:

  • 运行单元测试
  • 检查Dockerfile是否正常
  • 构建Docker镜像
  • 运行镜像并测试是否正常
  • 推送镜像至所选注册中心
  • 发送通知至Slack频道

信息

默认情况下,Buddy缓存Docker层和应用程序依赖项以加快构建过程。

Docker流水线示例

构建参数

默认情况下,Buddy不会将环境变量传递给构建。如果要传递则必须定义构建参数并提供要作为值传递的环境变量。

信息

您可以在此处找到默认环境变量的完整列表 >>>

除此之外,您可以在操作中定义自己的构建参数:

构建参数

目标构建阶段

如果您的Dockerfile包含镜像多构建阶段,您可以在“选项”选项卡中指定应该构建哪个阶段:

目标构建阶段

缓存

所有Docker层在构建后都会自动缓存。这意味着后续构建只创建自上次构建以来发生变化的层,这大大减少了构建时间。每次构建后,Buddy都会运行 docker prune 删除所有悬空镜像(与任何标签镜像无关并占用磁盘空间的层)。

如果您运行多阶段构建,您可能需要禁用"prune"选项,因为它也会删除中间阶段的层。您可以在“选项”栏中选取“Don't prune images”执行此操作:

缓存选项