296
221

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Docker for Mac の Mutagen-based caching で Volume のパフォーマンスが劇的に改善した

Last updated at Posted at 2020-05-24

2020/8/23 追記

2.3.5.0 の Edge release で削除されてしまった模様です。
今後の統合方法を検討するということで、続報を期待します。。


Docker for Mac の Edge channel で、 Mutagen ベースのキャッシュが使えるようになっています。(手元のバージョンは 2.3.1.0)

従来、 EC-CUBE をはじめとする Symfony をベースとしたアプリケーションや、Composer や npm などのパッケージ管理システムのファイルをマウントすると、強烈に遅くなる問題がありました。

今回利用できるようになった Mutagen ベースのキャッシュを利用するには、

  1. Preferences -> Resources -> FILE SHAREING でマウントするディレクトリを指定
  2. キャッシュを ON にするだけ。

です。
スクリーンショット 2020-05-24 19.54.49.png

あとは通常通り、アプリケーション全体をボリュームにマウントして大丈夫です。

## 例
docker run --name ec-cube -p "8080:80" -v "$PWD:/var/www/html:cached" --link container_mysql:db eccube-php-apache

以下、手元の環境での比較です。
約7倍にパフォーマンス向上しています。
(性能のよいディスク使っているので、体感的な差は少ないですが、古めの環境では大きく差が出ると思います)

Mutagen-based caching OFF の場合
スクリーンショット 2020-05-24 20.24.55.png

Mutagen-based caching ON の場合
スクリーンショット 2020-05-24 20.21.49.png

GitHub の issues にもパフォーマンス検証結果がコメントされていますので、併わせてご覧ください。

Ruby や Node.js など、 PHP 以外のアプリケーションでもパフォーマンス向上が期待できます。
Docker for Mac の遅さに手を焼いていた方はぜひお試しください!

2020年5月26日追記

マウントしたファイルのパーミッションが変わってしまう問題 があります。
近いうちに改善されるかもしれませんが、 コンテナ上で chmod -R o+w <mounted volume> するなりして凌ぎましょう...

こちらのツイートも参考に

296
221
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
296
221

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?