Docker Build GitHub Actions
GitHub Actions 是一个流行的 CI/CD 平台,用于自动化您的构建、测试和部署流水线。Docker 提供了一套官方 GitHub Actions 供您在工作流程中使用。这些官方操作是可重用、易于使用的组件,用于构建、注释和推送镜像。
提供以下 GitHub Actions
- 构建和推送 Docker 镜像:使用 BuildKit 构建和推送 Docker 镜像。
- Docker 登录:登录到 Docker 注册表。
- Docker Setup Buildx:启动 BuildKit 构建器。
- Docker 元数据操作:从 Git 引用和 GitHub 事件中提取元数据。
- Docker Setup QEMU:安装 QEMU 用于多架构构建的静态二进制文件。
- Docker Buildx Bake:启用使用 Bake 进行高级构建。
- Docker Scout:分析 Docker 镜像的安全漏洞。
使用 Docker 的 Actions 提供了一个易于使用的界面,同时仍然允许灵活地自定义构建参数。
示例
如果您正在寻找有关如何使用 Docker GitHub Actions 的示例,请参阅以下部分
开始使用 GitHub Actions
本教程将引导您完成设置和使用 Docker GitHub Actions 构建 Docker 镜像并将镜像推送到 Docker Hub 的过程。您将完成以下步骤
- 在 GitHub 上创建一个新的仓库。
- 定义 GitHub Actions 工作流程。
- 运行工作流程。
要学习本教程,您需要一个 Docker ID 和一个 GitHub 帐户。
第一步:创建仓库
创建一个 GitHub 仓库并配置 Docker Hub 凭据。
使用 此模板仓库创建一个新的 GitHub 仓库。
该仓库包含一个简单的 Dockerfile,仅此而已。如果您愿意,可以使用包含可运行 Dockerfile 的其他仓库。
打开仓库的**设置**,然后转到**密钥和变量** > **Actions**。
创建一个名为
DOCKERHUB_USERNAME的新**仓库变量**,并将您的 Docker ID 作为值。为 Docker Hub 创建一个新的 个人访问令牌。您可以将此令牌命名为
clockboxci。将 Docker Hub 访问令牌作为**仓库密钥**添加到您的 GitHub 仓库中,名称为
DOCKERHUB_TOKEN。
创建仓库并配置凭据后,您就可以开始操作了。
第二步:设置工作流程
设置您的 GitHub Actions 工作流程以构建镜像并将其推送到 Docker Hub。
转到您在 GitHub 上的仓库,然后选择**Actions**选项卡。
选择**自行设置工作流程**。
这将带您进入一个页面,用于在您的仓库中创建新的 GitHub Actions 工作流程文件,默认情况下位于
.github/workflows/main.yml下。在编辑器窗口中,复制并粘贴以下 YAML 配置。
name: ci on: push: branches: - "main" jobs: build: runs-on: ubuntu-latestname:此工作流程的名称。on.push.branches:指定此工作流程应针对列表中的分支的每次推送事件运行。jobs:创建一个作业 ID(build)并声明作业应在其上运行的机器类型。
有关此处使用的 YAML 语法的更多信息,请参阅 GitHub Actions 的工作流程语法。
第三步:定义工作流程步骤
现在是核心内容:要运行哪些步骤,以及按什么顺序运行它们。
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push
uses: docker/build-push-action@v6
with:
push: true
tags: ${{ vars.DOCKERHUB_USERNAME }}/clockbox:latest前面的 YAML 代码片段包含一系列步骤,这些步骤
使用 Docker 登录 action 和您的 Docker Hub 凭据登录 Docker Hub。
使用 Docker Setup Buildx action 创建 BuildKit 构建器实例。
使用 构建和推送 Docker 镜像构建容器镜像并将其推送到 Docker Hub 仓库。
with密钥列出了许多配置步骤的输入参数push:告诉 action 在构建镜像后将其上传到注册表。tags:指定要将镜像推送到何处的标签。
将这些步骤添加到您的工作流程文件中。完整的工作流程配置应如下所示
name: ci
on:
push:
branches:
- "main"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push
uses: docker/build-push-action@v6
with:
push: true
tags: ${{ vars.DOCKERHUB_USERNAME }}/clockbox:latest运行工作流程
保存工作流程文件并运行作业。
选择**提交更改...**并将更改推送到
main分支。推送提交后,工作流程将自动启动。
转到**Actions**选项卡。它会显示工作流程。
选择工作流程将显示所有步骤的细分。
工作流程完成后,转到您在 Docker Hub 上的仓库。
如果在此列表中看到新的仓库,则表示 GitHub Actions 已成功将镜像推送到 Docker Hub。
后续步骤
本教程向您展示了如何使用官方 Docker Actions 创建一个简单的 GitHub Actions 工作流程,以构建镜像并将其推送到 Docker Hub。
您可以执行更多操作来自定义工作流程以更好地满足您的需求。要了解有关某些更高级用例的更多信息,请查看高级示例,例如 构建多平台镜像,或 使用缓存存储后端,以及如何 配置您的构建器。