🦔

M1Macでdocker buildしたらERRORになった

2024/02/26に公開

やろうとしたこと

Dockerfileの更新があったのでcodeBuildで使用しているイメージの更新するぞ〜
ローカルでイメージビルドして、ECRにプッシュする
手順書あるから余裕✌️

起きたこと

  • ローカルPC(M1Mac)にて、手順書にあるコマンドでビルドしようとしたらエラーになった
    • コマンド:
      • docker build --platform linux/x86_64 -t hogetag .
    • エラーメッセージ:
      • ERROR: failed to solve: process "/bin/sh -c dnf -y update~~ うんたらかんたら ~~" did not complete successfully: exit code: 1

何がだめだったか

platform指定が間違っていた!

どうしたか

  • 下記コマンドで解決✌️
    • docker build --no-cache --platform linux/arm64 -t hogetag .

そもそもdockerコマンド分かっていない

  • buildコマンドのplatformオプションってなんなん( ◠‿◠ )
    • 公式ドキュメントより:
      • --platform:サーバがマルチプラットフォーム対応であれば、プラットフォームを指定
    • 対応するOSおよびCPUアーキテクチャの組み合わせを指定できるらしい
  • linux/x86_64ってなんなん( ◠‿◠ )
    • CPUの種類
    • x86(Intel)、ARM(ARM)などがあるらしい
    • M1MacはARM、通常のMac(?)はx86(Intel)らしい
      • 私のPCはM1Macなのでlinux/arm64指定でないとダメだったのね

感想

ほーん🐈

補足

  • CPUアーキテクチャを確認するコマンド
    • uname -m
  • ビルド時にキャッシュ無視するオプション
    • --no-cache
  • M1Macでuname -m叩いたらx86_64と表示された...
    • Rosettaを使用して起動しているとx86_64と表示されるらしい?
      • この辺はまだ理解していないので追々...

参考

Discussion