docker/build-push-actionでマルチプラットフォームイメージにタグを打つ
5545 ワード
はじめに
私は、GitHubのcontribution数を年または月単位で集計するツールをDockerイメージとして公開しています。
M1 Macを使うようになり(長らく放置していましたが)ARM対応することにしました。
- linux/amd64
- linux/arm64
をサポートするマルチプラットフォームイメージの公開を試みました。単純にdocker tag
とdocker push
をすると、linux/amd64
とlinux/arm64
の片方のみにタグが付いてしまいました。
docker/build-push-action
を利用して解決したため、紹介します。
解決した課題
docker pull
やdocker run
を実行する環境にあわせて適切なイメージをダウンロードできるようにしました。Docker Hubでは以下のようにOS/ARCH
を選択できます。
GitHub Actionsにおける解決方法
Docker公式のGitHub Actionsを利用すると簡単です。
-
docker/setup-qemu-action
を実行する -
docker/setup-buildx-action
を実行する -
platform
とtag
を指定してdocker/build-push-action
を実行する
main
ブランチに対するpushをトリガーとしてdocker push [options] $REPOSITORY:latest
するサンプルはこちらです。