互联网技术 / 互联网资讯 · 2024年1月8日

设置 GitHub Actions 工作流程构建并推送 Docker 镜像

在前面的步骤中,我们已经创建了个人访问令牌(PAT),并将其保存到 GitHub 仓库的机密中,这样工作流就可以访问 Docker Hub。接下来,可以通过 GitHub Actions 自动完成镜像的构建与推送。

整个流程主要包含两个关键操作:

  • 使用保存在 GitHub Secrets 中的凭据登录 Docker Hub;
  • 构建镜像并将其推送到 Docker Hub。

在这个示例里,构建步骤会启用推送功能,并为镜像添加 latest 标签。最后还会输出镜像摘要,方便确认本次推送的内容。

创建 GitHub Actions 工作流

可以按照下面的步骤完成配置:

  1. 进入 GitHub 仓库页面,点击 Actions > New workflow
  2. 选择自行创建工作流,然后填入对应的 YAML 配置。

首先,为工作流设置一个名称:

name: CI to Docker Hub

然后定义触发条件。这里的示例是在主分支每次发生推送时执行:

on:
push:
branches: [ main ]

接着定义具体任务。这里创建一个名为 build 的任务,并让它在最新的 Ubuntu 运行环境中执行:

jobs:
build:
runs-on: ubuntu-latest

工作流步骤说明

在任务中,需要依次添加以下步骤:

  • 检出仓库代码,让工作流可以访问项目文件;
  • 使用 Docker Hub 用户名和访问令牌登录;
  • 启用 Docker Buildx,以便使用 BuildKit 完成构建;
  • 执行镜像构建与推送;
  • 输出镜像摘要。

对应配置如下:

steps:
- name: Check out Repo
uses: actions/checkout@v2

- name: Login to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1

- name: Build and Push
id: docker_build
uses: docker/build-push-action@v2
with:
context: ./
file: ./Dockerfile
push: true
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/simplewhale:latest

- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}

运行与验证

保存工作流后,可以先让它执行一次。随后再对 Dockerfile 做一些修改并提交到主分支,以确认持续集成流程是否能够自动构建并推送新的镜像版本。

云计算核心技术Docker教程:Docker设置 GitHub Actions 工作流程