buildxを使ったGoアプリケーションイメージのクロスコンパイル

概要

プライベートで開発しているアプリケーションのイメージをクロスコンパイルする必要性に駆られて(ローカルの開発環境と本番の環境でアーキテクチャが異なっていることが起因)対応したのでメモ。

buildx

Docker Desktopにはbuildxが標準で備わっているのでそちらを利用する。

Docker Buildx

buildxを使うことでマルチアーキテクチャ対応のイメージを簡単に作ることができる。

こんな感じのDockerfileがあったとする。(実際に使っているDockerfileなのだが..)

環境変数については下記参照。 cf. https://matsuand.github.io/docs.docker.jp.onthefly/engine/reference/builder/

buildとpushはこんな感じ。platformは複数指定することができる。

余談

MySQLのオフィシャルイメージがいつの間にかARMにも対応するようになっていた。 M1ユーザーは嬉しい。

https://hub.docker.com/layers/library/mysql/8.0.29/images/sha256-44f98f4dd825a945d2a6a4b7b2f14127b5d07c5aaa07d9d232c2b58936fb76dc?context=explore

参考