MacでローカルでDockerイメージをビルドしてAWSのECRにpush。ECR上のイメージでECSのFargateを作って起動させた時に以下エラーが発生してコンテナが起動してはすぐに落ちるのループ状態に。
standard_init_linux.go:228: exec user process caused: exec format error
同じイメージでローカルでコンテナを起動したらうまく行くのになんでやねん!と思ってハマってたところ、以下のような記事を見つけた。
はい、ここにある通り、M1チップ搭載のMacでDockerイメージをビルドしたのが原因でした。ビルドするマシンと実行するマシンのCPUアーキテクチャが異なると起動に失敗する、とのことです。Cloud9とかEC2, CodeBuildなど、AWSのサービス上でビルドすれば問題なかったようですが、まさかM1チップが原因だとは思いつきませんでした。
イメージビルド時にplatformを指定やれば、Macローカルビルドしたイメージでも問題なくコンテナ起動しました。
docker build --platform amd64 ./