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 ベースのキャッシュを利用するには、
- Preferences -> Resources -> FILE SHAREING でマウントするディレクトリを指定
- キャッシュを ON にするだけ。
あとは通常通り、アプリケーション全体をボリュームにマウントして大丈夫です。
## 例
docker run --name ec-cube -p "8080:80" -v "$PWD:/var/www/html:cached" --link container_mysql:db eccube-php-apache
以下、手元の環境での比較です。
約7倍にパフォーマンス向上しています。
(性能のよいディスク使っているので、体感的な差は少ないですが、古めの環境では大きく差が出ると思います)
GitHub の issues にもパフォーマンス検証結果がコメントされていますので、併わせてご覧ください。
Ruby や Node.js など、 PHP 以外のアプリケーションでもパフォーマンス向上が期待できます。
Docker for Mac の遅さに手を焼いていた方はぜひお試しください!
2020年5月26日追記
マウントしたファイルのパーミッションが変わってしまう問題 があります。
近いうちに改善されるかもしれませんが、 コンテナ上で chmod -R o+w <mounted volume>
するなりして凌ぎましょう...
こちらのツイートも参考に
試した
— Koji Tanaka (@tenkoma) May 23, 2020
1. キャッシュ処理が終わるまでコンテナ内で使えない
2. 使わないときよりCPU消費してる気がする
3. owner/group/permissionが変わる。問題は報告されていて改善するかも? https://t.co/TGiY5wqkaU
Some nice performance work on @Docker Desktop for Mac, please help test it if you can. Shockingly good performance on some things (like #ddev composer install). Testing instructions and comparisons at https://t.co/TlJC0JsoCN pic.twitter.com/gifRftpk6d
— Randy Fay (@randyfay) May 27, 2020