Docker Build GitHub Actions

GitHub Actions 是一个流行的 CI/CD 平台,用于自动化您的构建、测试和部署流水线。Docker 提供了一套官方 GitHub Actions 供您在工作流程中使用。这些官方操作是可重用、易于使用的组件,用于构建、注释和推送镜像。

提供以下 GitHub Actions

使用 Docker 的 Actions 提供了一个易于使用的界面,同时仍然允许灵活地自定义构建参数。

示例

如果您正在寻找有关如何使用 Docker GitHub Actions 的示例,请参阅以下部分

开始使用 GitHub Actions

本教程将引导您完成设置和使用 Docker GitHub Actions 构建 Docker 镜像并将镜像推送到 Docker Hub 的过程。您将完成以下步骤

  1. 在 GitHub 上创建一个新的仓库。
  2. 定义 GitHub Actions 工作流程。
  3. 运行工作流程。

要学习本教程,您需要一个 Docker ID 和一个 GitHub 帐户。

第一步:创建仓库

创建一个 GitHub 仓库并配置 Docker Hub 凭据。

  1. 使用 此模板仓库创建一个新的 GitHub 仓库。

    该仓库包含一个简单的 Dockerfile,仅此而已。如果您愿意,可以使用包含可运行 Dockerfile 的其他仓库。

  2. 打开仓库的**设置**,然后转到**密钥和变量** > **Actions**。

  3. 创建一个名为 DOCKERHUB_USERNAME 的新**仓库变量**,并将您的 Docker ID 作为值。

  4. 为 Docker Hub 创建一个新的 个人访问令牌。您可以将此令牌命名为 clockboxci

  5. 将 Docker Hub 访问令牌作为**仓库密钥**添加到您的 GitHub 仓库中,名称为 DOCKERHUB_TOKEN

创建仓库并配置凭据后,您就可以开始操作了。

第二步:设置工作流程

设置您的 GitHub Actions 工作流程以构建镜像并将其推送到 Docker Hub。

  1. 转到您在 GitHub 上的仓库,然后选择**Actions**选项卡。

  2. 选择**自行设置工作流程**。

    这将带您进入一个页面,用于在您的仓库中创建新的 GitHub Actions 工作流程文件,默认情况下位于 .github/workflows/main.yml 下。

  3. 在编辑器窗口中,复制并粘贴以下 YAML 配置。

    name: ci
    
    on:
      push:
        branches:
          - "main"
    
    jobs:
      build:
        runs-on: ubuntu-latest
    • name:此工作流程的名称。
    • 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 代码片段包含一系列步骤,这些步骤

  1. 使用 Docker 登录 action 和您的 Docker Hub 凭据登录 Docker Hub。

  2. 使用 Docker Setup Buildx action 创建 BuildKit 构建器实例。

  3. 使用 构建和推送 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

运行工作流程

保存工作流程文件并运行作业。

  1. 选择**提交更改...**并将更改推送到 main 分支。

    推送提交后,工作流程将自动启动。

  2. 转到**Actions**选项卡。它会显示工作流程。

    选择工作流程将显示所有步骤的细分。

  3. 工作流程完成后,转到您在 Docker Hub 上的仓库

    如果在此列表中看到新的仓库,则表示 GitHub Actions 已成功将镜像推送到 Docker Hub。

后续步骤

本教程向您展示了如何使用官方 Docker Actions 创建一个简单的 GitHub Actions 工作流程,以构建镜像并将其推送到 Docker Hub。

您可以执行更多操作来自定义工作流程以更好地满足您的需求。要了解有关某些更高级用例的更多信息,请查看高级示例,例如 构建多平台镜像,或 使用缓存存储后端,以及如何 配置您的构建器