emahiro/b.log

Drastically Repeat Yourself !!!!

GitHub Actions 上で Multi Platform 対応した Image を作る

Overview

GitHub Actions 上で Multi Platform に対応した Docker Image を作成して Docker Hub に push するまでの備忘録です。

GitHub 上で Multi Platform 対応のビルドをする

公式に手順が載っているのでこれをベースに Actions を構築します。

docs.docker.com

Docker build に渡す引数

path context をカスタマイズしたいときは以下の一覧に載ってるものを使います。

github.com

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

github.com

See Also