【M1 mac】cloud runにdockerコンテナをデプロイするとterminated: Application failed to start: Failed to create init process: failed to load /bin/sh: exec format errorのエラーになる

0

2022年03月29日 16:30

M1 macでcloud runへDockerコンテナをデプロイするときに下記のエラーが発生していました。

img

名称未設定 001

結論

Dockerfileに-platform=linux/x86_64を追加すると解決します。

ex.
img

原因

コンテナ イメージ内の実行可能ファイルは Linux 64 ビット用にコンパイルする必要があり、Cloud RunではLinux x86_64 ABI形式がサポートされています。
どうやらM1 macでDockerfileを作成するとデフォルトでは別のプラットフォームが指定されているようでした。

M1でビルドされたDocker imageにはどのプラットフォームが指定されているのか

Linux OS では/etc/os-releaseにOS情報が入っているとのことで、下記コマンドで確認しました。(参考)。WARNINGの内容を見るとhostのデフォルトプラットフォームはlinux/arm64/v8だが(ビルド時に)リクエストされたプラットフォームはlinux/amd64と書いてあります。M1で指定されているプラットフォームはlinux/arm64/v8のようですね。

img

参考

https://stackoverflow.com/questions/66127933/cloud-run-failed-to-start-and-then-listen-on-the-port-defined-by-the-port-envi
https://onoredekaiketsu.com/x86-64-x64-amd64-what-is-the-difference-between-these/#toc10

# Go
# GCP
# Dockerfile
0

診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。

目次を見る