M1 Mac で Docker イメージをビルドしようとすると no match for platform in manifest が出る


TL;DR

docker build -t name --platform linux/amd64 .

背景

FROM mysql:5.7

M1 Mac上でこれだけ書いた Dockerfiledocker build -t my_mysql . でビルドしようとすると以下のエラーが出ます。

failed to solve with frontend dockerfile.v0: failed to create LLB definition: no match for platform in manifest sha256:853105ad984a9fe87dd109be6756e1fbdba8b003b303d88ac0dda6b455f36556: not found

docker pull --platform linux/amd64 mysql:5.7 && docker run -it --rm mysql:5.7 は正常に動作するのでなぜ?と思っていたのですがビルド時にも platform を指定する必要があったようです。考えてみれば当たり前ですし後から振り返ると対策もtrivialなんですがマルチCPUアーキテクチャを意識せずにボケっとDockerを使っていたので無駄にハマりました。ググってもヒットしなかったので同じトラップにハマってる人の助けになればと思い備忘録的に記録することにしました。