対象読者
・Google Cloud 初心者
・M1 Mac 使用者
エラー内容
$ kubectl logs pod_name
exec /usr/local/bin/bundle: exec format error
適切な docker image
を指定しているし、そのdocker image
をPULLできているのに、
上記のエラーが出ていました。
調べてみると、OS の問題かもしれないという情報がありました。
その視点で調べていくと、以下の記事を見つけました。
私の環境では、本来はGitHub Actions
でdocker
をビルドしていますが、
今回は手元のターミナルからビルドやデプロイを試していました。
M1チップでビルドされたdocker image
はexec format error
が出てしまうようです。
解決方法
platform
オプションは、ビルドのターゲットプラットフォームを指定します。
この場合、ターゲットプラットフォームは「amd64」となっており、x86-64アーキテクチャ向けのイメージがビルドされることになります。
$ docker build --platform amd64 -t tag_name ./docker_path
再度PUSHします。
docker push docker_image_name
これでpod
が正常に起動するようになりました。
終わりに
Google Cloud の初心者である私は、クラウド側の問題なのか、Docker の問題なのか切り分けるのに時間がかかります。
そこに、今回のようなM1 チップの問題が絡んでくるとさらに時間がかかってしまいました。
同じエラーが出ている方の助けになると嬉しいです。