🍏
【M1 Mac】platform: linux/amd64の指定をやめたらDockerのRailsが6倍速くなった
あるRailsプロジェクトの開発時、M1 MacのDockerでの動作が非常に遅かったのですが、linux/amd64アーキテクチャで動かすことをやめたところ、6倍も速くなりました🎉
環境
- M1 Max MacBook Pro (Monterey 12.6)
- Docker Desktop for Mac 4.15.0
- docker-sync 1.0.5
- Ruby3, Rails7
変更前の動作速度
Rails Console立ち上げ、テスト実行など、Railsコマンドを叩くたびに毎回30秒ほどかかっていました。
↓ コンテナ内でrails routes実行時の時間計測結果(3回測った平均が29.14秒)
$ time rails routes
# ...
real 0m30.520s
user 0m27.538s
sys 0m2.045s
変更点
docker-composeの platform: linux/amd64
の指定を外しました。
services:
rails:
build: .
platform: linux/amd64 <= ここを削除
linux/amd64と指定していた理由
mini_racerというgemが原因で、M1 Macデフォルトのarm64だとbundle installができなかったため、amd64で動かしていました。
→ チームメンバーがmini_racerへの依存を断ち切ってくれたため、arm64で動かせるようになりました🙌
変更後の動作速度
↓ コンテナ内でrails routes実行時の時間計測結果(3回測った平均が4.43秒)
$ time rails routes
# ...
real 0m4.656s
user 0m3.378s
sys 0m1.265s
まとめ
平均29.14秒
→ 平均4.43秒
と 6.58倍 も速くなりました🎉
リクエストの処理速度も目に見えて速くなっているので、本当にこの変更を可能にしてくれたチームメンバーに感謝です🙏
参考
Discussion