github actions生成支持多种机器架构的镜像

• 2 分钟阅读 • docker

要使镜像支持arm64,amd64,arm32,必须在工作流程文件中设置 QEMU 和 Buildx。

建立workflows文件

生成.github/workflows/Multi-arch Docker Build (GHCR).yml,内容如下:

name: Multi-arch Docker Build (GHCR)

on:
  push:
    branches:
      - main

permissions:
  contents: read
  packages: write  # 推送镜像到 GHCR 需要此权限

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Check out code
        uses: actions/checkout@v3

      # 关键修复步骤 1: 启用 QEMU(支持 ARM 构建)
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v2

      # 关键修复步骤 2: 使用 `docker-container` 驱动
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2
        with:
          driver: docker-container 
          driver-opts: |
            network=host

      - name: Login to GitHub Container Registry
        uses: docker/login-action@v2
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Build and Push (多平台镜像)
        uses: docker/build-push-action@v4
        with:
          context: .
          platforms: linux/amd64,linux/arm64,linux/arm/v7 
          push: true
          tags: |
            ghcr.io/${{ github.repository_owner }}/myapp:${{ github.sha }}
            ghcr.io/${{ github.repository_owner }}/myapp:latest

执行workflows

成功后会提交到ghcr.io。


此处比预计的amd64,arm64,arm32多了一个unknown,deepseek说是Dockerfile中某些语句没有指明架构导致的,需要进一步改进。
至此已完成多种架构的支持,bug以后再修正。

文章标签: docker

上一篇 : ssh免密登录设置
下一篇 : 使用GitHub Actions自动化docker并上传
留言
阅读进度 0%