使用GitHub Action构建全平台docker镜像
本文最后更新于 2020年08月13日

前言

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

教程

GitHub Action的前期配置请参考我这篇博客:https://sleele.com/2020/01/06/使用github-action构建image推送docker-hub/

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

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

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比较复杂,使用这个的一般都是大项目,参数很多,大家可以参照我上面的内容来理解

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之后的效果图

补充

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

原创声明
本文由 NG6 于2020年01月10日发表在 sleele的博客
如未特殊声明,本站所有文章均为原创;你可以在保留作者及原文地址的情况下转载
转载请注明:使用GitHub Action构建全平台docker镜像 | sleele的博客

评论

  1. Windows Firefox
    4年前
    2020-7-11 20:58:02

    如何给不同arch指定不同dockefile?

    • NG6
      Ryan
      博主
      Macintosh Safari
      4年前
      2020-7-13 11:13:03

      @Ryan --file ./test/Dockerfile ./test

      • NG6
        NG6
        博主
        Macintosh Safari
        4年前
        2020-7-13 11:15:40
  2. layui0320
    Windows Chrome
    4年前
    2020-6-24 5:16:58

    你好,我根据你的教程来弄,只有master主分支能正常action构建,其他分支无法启动action构建!项目链接:https://github.com/layui0320/sakura-frps 麻烦你看下,谢谢!

    • NG6
      layui0320
      博主
      Macintosh Safari
      4年前
      2020-6-28 12:03:14

      @layui0320

      on:
        push:
          branches:
            - 'master' # 改成你要的分支
      

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇