Overview
GitHub Actions 上で Multi Platform に対応した Docker Image を作成して Docker Hub に push するまでの備忘録です。
GitHub 上で Multi Platform 対応のビルドをする
公式に手順が載っているのでこれをベースに Actions を構築します。
Docker build に渡す引数
path context をカスタマイズしたいときは以下の一覧に載ってるものを使います。
Docker Hub 側の設定
Github の Secret に DockerHub で生成したトークンを使用するので DockerHub 側でトークンを生成する必要があります。
設定方法は以下のように DockerHub の Account Setting の画面から行います。


実際の設定ファイル
1つ前のエントリで RedisCluster のイメージを作った話をしましたが、今回はそれを GitHub Actions 上でマルチプラットフォームに対応させて DockerHub まで Push するようにした設定ファイルは以下です。
name: multi platform build
on:
push:
branches:
- "master"
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Build and push for Redis@6.2.11
uses: docker/build-push-action@v4
with:
context: .
build-args: redis_version=6.2.11
platforms: linux/amd64,linux/arm64
push: true
tags: emahiro/redis-cluster:6.2.11