本文最后更新于 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的博客
本文由 NG6 于2020年01月10日发表在 sleele的博客
如未特殊声明,本站所有文章均为原创;你可以在保留作者及原文地址的情况下转载
转载请注明:使用GitHub Action构建全平台docker镜像 | sleele的博客
如何给不同arch指定不同dockefile?
@Ryan
--file ./test/Dockerfile ./test
@NG6
查看图片
你好,我根据你的教程来弄,只有master主分支能正常action构建,其他分支无法启动action构建!项目链接:https://github.com/layui0320/sakura-frps 麻烦你看下,谢谢!
@layui0320