dockerhub 获取 token
登录 dockerhub,获取token,如下

将 dockerhub token 添加到 github repo 中

github 仓库添加 action
github 代码仓库页面中选择 Actions
点击 Docker image Action 的 Configure

编辑action配置文件.github/workflows/docker-image.yml 内容如下
name: Docker Image CI
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v3
-
name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Set up QEMU
uses: docker/setup-qemu-action@v2
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
-
name: Build and push
uses: docker/build-push-action@v4
with:
context: .
file: ./Dockerfile
platforms: |
linux/amd64
linux/arm64
push: true
tags: ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.GITHUB_REPOSITORY_NAME_PART }}:latest
buildx 依赖 qemu
以下对该文件内容分别进行解释:
- name: 流程名,定义了这个流程的名称,可以与配置文件名不同。只要与其他流程配置文件中的流程名不同即可。
- on: 触发条件,定义了在何种条件下触发该流程。这里定义的是在 main 分支提交时触发该流程。
- env: 环境变量,定义了静态可公开环境变量,一般来说可以将应用的名称、镜像的名称写在这个部分。
- jobs: 任务,定义了流程所需要执行的各项任务,可以是一个或多个。
- 这里定义了 5 个任务,从前到后分别是
- 检出代码
- 登录到github,其中
${{ secrets.DOCKERHUB_USERNAME }}
和${{ secrets.DOCKERHUB_TOKEN }}
分别是 dockerhub 的用户名和token,需要在dockerhub生成,然后配置在仓库-Settings-Security-Securets and variables - Actions
中 - 安装 qemu (buildx 依赖 qemu)
- 安装 buildx,支持构建更多架构的惊喜
- 构建docker镜像,并推送到dockerhub仓库
- file: 指定在项目仓库中的Dockerfile文件位置。
- platforms:指定构建镜像所需要兼容支持的平台架构
- tags: 将要构建的镜像标签,这里每次构建latest镜像,
${{ env.GITHUB_REPOSITORY_NAME_PART }}
表示仓库名
注:docker/setup-qemu-action@v2
对应的就是 https://github.com/docker/setup-qemu-action 分支v2
来源:https://msdemt.github.io/p/github-action-build-docker/
文章评论