Vagrantを利用してmacでも高速なdockerを利用する方法(Mutagen使わないバージョン)
Mutagenがバグりやすい
Vagrantを利用することでmacでも高速なdockerを利用できるようにするという類の記事はたくさんある。たとえば
- DXを大幅に低下させるDocker for Macを捨ててMac最速のDocker環境を手に入れる
- Docker for Macの代わりに、Vagrant + Dockerで開発環境を構築する
- Vagrantを使う「Mac最速のDocker環境」を初心者向けに解説【遅いMac for Dockerを卒業】
などなど。
これらの記事の多くで、ローカル環境と仮想環境のファイル同期をおこなうのにMutagenが利用されているのだが、このMutagen(というかvagrant-mutagen)が原因で自分の環境では2週間に1回くらいのペースで仮想環境が立ち上がらなくなった。
vagrant-mutagenが同期をおこなうために、vagrant-hostsupdaterにsshのキーを生成させているのだが、どうやらそれがなにかの拍子に書き換わるか消えるかして、仮想環境が立ち上がらなくなっているようだった。自分が操作をやらかしている可能性もあるのだが、いずれにせよ些細なミスで仮想環境が立ち上がらなくなるのは非常に困る。
当時は立ち上がらなくなるたびに仮想環境を作り直していたが、さすがに時間の無駄だと思い、Mutagen以外のツールを用いてファイル同期をおこなう方法を模索した。
プラグインを使わなくても標準機能を使えばできた
config.vm.synced_folder './', '/home/vagrant/app', type: 'virtualbox'
上記の設定をVagrantfileに書くだけでいけた。この例ではローカルの./(つまりVagrantfileが存在するディレクトリ)と仮想環境の/home/vagrant/appを同期している。
これさえ記述すれば、Mutagenをインストールする必要も、vagrant-mutagenやvagrant-hostsupdaterのようなプラグインをインストールする必要も、mutagen.ymlを書く必要もなくなるのでとても楽だと思う。
なぜネット上の記事ではMutagenが使われている?
わざわざvagrant-mutagenなるプラグインが存在しているくらいだから、おそらくMutagenのほうがVagrantの標準機能よりも高度なことができるのだろうし、それが理由で技術記事のほぼ全てでMutagenを使う方法が紹介されているのだろう。
ただ自分の場合は上記の方法で充分であったし、特に速度的に不満を覚えたこともない。上記の方法に切り替えて半年以上経っているが、一度もバグってないことが何よりも嬉しい。必ずしもMutagenを使う必要がなく、最低限のファイル同期さえできればそれでOKという人はこの記事を参考にしてもらえると嬉しい。
Discussion