😎
M1 Pro + Lima + Dockerが速い (Rails/RSpec検証)
はじめに
普段はRailsを使用して開発をすることが多く、開発環境はMacBook Pro(Intel) + Docker for Macを使用しています。
ただ最近は以下のようなこともあり、今後のためにRails/RSpecの実行時間がどのようになるか検証しました。
- MacBook Pro 2021 (M1 Pro)を購入
- Docker for Macの有料化(個人的には対象外ですが)
- Docker for Macの代替えとして、Lima + Dockerがよさそう
- Lima + Dockerで、Docker for Mac ボリュームマウントの遅さから解放されるのでは?
環境
MacBook Pro 2021 (M1 Pro)
- CPU: M1 Pro (10 core)
- メモリ: 32GB
MacBook Pro 2018 (Intel)
- CPU: Intel Core i5 2.3GHz クアッドコア
- メモリ: 8GB
Lima + Docker
- version 0.7.3
- docker.yaml を使用
- CPU: 4 core, メモリ: 2GBで設定
Docker for Mac
- Version 4.2.0 (70708)
- CPU: 4 core, メモリ: 2GBで設定
Railsアプリ
- docker-composeを使った開発環境が構築できるので、こちらを使用させていただく
- 各環境で動作/RSpecの実行対象を絞るために変更
diff --git a/.dockerdev/Dockerfile b/.dockerdev/Dockerfile index 4d9b279e1..3690f2e0b 100644 --- a/.dockerdev/Dockerfile +++ b/.dockerdev/Dockerfile @@ -32,7 +32,7 @@ RUN apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get -yq dist-upgrad DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends \ libpq-dev \ postgresql-client-$PG_VERSION \ - mysql-client \ + default-mysql-client \ nodejs \ && rm -rf /var/lib/apt/lists/* diff --git a/bin/rspec b/bin/rspec index c122dbeb6..7515588d2 100755 --- a/bin/rspec +++ b/bin/rspec @@ -3,11 +3,7 @@ ROOT = File.expand_path('..', __dir__) LIBS = %w[ - api - backend core - frontend - sample ] # Is it a spec file or an RSpec option? diff --git a/docker-compose.yml b/docker-compose.yml index 79affa9b4..df44d1837 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.7' services: mysql: - image: mysql:8.0 + image: mysql/mysql-server:8.0 command: --default-authentication-plugin=mysql_native_password environment: MYSQL_ROOT_PASSWORD: password
- RSpecは
docker-compose exec app env DB=postgres bin/rspec
で実行
検証結果
Docker for Mac | Lima + Docker | |
---|---|---|
MacBook Pro 2018 (Intel) | 14 minutes 17 seconds | 12 minutes 50 seconds |
MacBook Pro 2021 (M1 Pro) | 8 minutes 50 seconds | 4 minutes 33.3 seconds |
まとめ
MacBook Pro 2021 (M1 Pro) + Lima + Dockerが一番速いですね。
とくにMacBook Pro 2021 (M1 Pro) + Docker for Macの比較すると倍くらいの差になりました。
M1やM1 Max、他Railsアプリ等での検証はしていませんが、今後Apple Siliconを搭載したMacでDockerを使用した開発をする場合は、Limaを使用したほうが快適かもしれません。
Discussion