🐈
M1 Mac上で環境構築しなおした時に学んだことのメモ
M1Mac上での環境構築
今業務でIntel Macを用いているのですが、少しずつ業務で使用するMacがM1に移行し始めています。
ローカルでの開発環境をM1上で構築しようとすると、いくつか引っ掛かるところがあり学んだこともあったのでそのメモ。(移行自体は作業途中なのですが)
Dockerのplatformを指定する
M1Macのプラットフォームはarm64だが、amdにしか対応していないイメージを使用したい場合に使用するようだ
platform: linux/amd64
nodeがM1上で動かない
nodeのバージョンによってはarm上で動かない
x86_64 アーキテクチャバージョンの node を rosseta2 経由でインストールする(上記記事にある通り)
MacにはRosetta2というソフトウェアがあって、amd上で動くバイナリファイルをarm上で動かせるようになる。(異なるCPUアーキテクチャ間の互換性を保つ)
archコマンドでアーキテクチャを切り替えることで、amd用のバイナリにビルドして、それをRosetta2を通して動かすようにする。
上記のDockerのplatformをamdに指定するというのも、同様にエミュレータを通してarm上でamd用のファイルを動かしているのだろう
上記二つとも、とりあえずえいやでエミュレータ上で動かそうという対応のはずで、正規の対応としてはエミュレータを通さずにarm上で動くように、動かなくなる条件を特定して対応すべきのはず(動かなくなる原因のライブラリは何か、バージョンを上げたらいけるか、など)
M1 MacのDocker上でGoogle Chromeが動かない
chromiumを代わりに使う
まとめ
CPUが変わるとDocker関連とかの諸々の問題で色々動かなくなることがあるので、原因を特定して、対象のライブラリを外したりバージョンをアップしたり、代替案を検討したりしてみよう
あるいは、色々用意されているエミュレータを使用してみよう
個人的には、Rosetta2というのがあるのを知れたというだけで勉強になった
Discussion