使用GitHub Action构建全平台docker镜像

使用GitHub Action构建全平台docker镜像

 

前言

GitHub Action这个工具实在是太方便了,不仅速度快,配置简单,还能够方便的在没有真机的情况下制作全平台的docker image

教程

GitHub Action的前期配置请参考我这篇博客:https://vps.la/2021/10/03/%e4%bd%bf%e7%94%a8github-action%e6%9e%84%e5%bb%baimage%e6%8e%a8%e9%80%81docker-hub/

我选用的是https://github.com/ilteoood/docker_buildx 的workflow,可以非常方便的配置各项参数

下面以我的这个配置文件举例

Code example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
name: Build Amd64 Image
on:
  release:
    types: [published]
jobs:
  build:
      runs-on: ubuntu-latest
      name: Build image job
      steps:
          - name: Checkout master
            uses: actions/checkout@master
          - name: Build and publish image
            uses: ilteoood/docker_buildx@master
            with:
              publish: true
              imageName: 你的docker id/你的镜像名
              platform: linux/amd64,linux/arm64,linux/arm/v7 # 你准备构建的镜像平台
              tag: latest # 默认latest,可以针对平台,修改tag
              dockerHubUser: ${{ secrets.DOCKER_USERNAME }} # docker hub userid
              dockerHubPassword: ${{ secrets.DOCKER_PASSWORD }} # docker hub password

platform支持:linux/amd64,linux/arm64,linux/arm/v7

crazy-max/ghaction-docker-buildx

再举例一个比较复杂的,crazy-max/ghaction-docker-buildx的workflow比较复杂,使用这个的一般都是大项目,参数很多,大家可以参照我上面的内容来理解

Code example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
name: Build Image
on:
  push:
    branches:
      - 'master'
    paths-ignore:
      - "README.md"
jobs:
  buildx:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v1
      - name: Dockerhub login
        env:
          DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
          DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
        run: |
          echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin
      - name: Set up Docker Buildx
        id: buildx
        uses: crazy-max/ghaction-docker-buildx@v1
        with:
          buildx-version: latest
      - name: Build dockerfile (with push)
        env:
          DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
        run: |
          docker buildx build
          --platform=linux/amd64,linux/arm/v7,linux/arm64
          --output "type=image,push=true"
          --file ./Dockerfile .
          --tag superng6/aria2:latest

推送到Docker HUB之后的效果图

使用GitHub Action构建全平台docker镜像

补充

使用GitHub Action构建全平台docker镜像

本教程是针对有一定编程能力的人,需要注意的是,底层镜像必须是多平台的才可以,还有你的代码和库也必须是对应平台的,所以我的建议是,针对不同平台创建不同分支,这样虽然麻烦,但是灵活性更高

使用GitHub Action构建全平台docker镜像
原文链接:https://sleele.com/2020/01/10/%E4%BD%BF%E7%94%A8github-action%E6%9E%84%E5%BB%BA%E5%85%A8%E5%B9%B3%E5%8F%B0docker%E9%95%9C%E5%83%8F/
阅读剩余
THE END