Help us understand the problem. What is going on with this article?

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

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> するなりして凌ぎましょう...

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

nanasess
Emacs のアイコンを作った人です
https://skirnir.co.jp
ec-cube
日本No.1ECオープンソースのEC-CUBEのコミッターやユーザーのコミュニティです。
http://www.ec-cube.net
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした