Homesteadで複数プロジェクトを使い分ける方法
LaravelのプロジェクトでHomesteadを使っていて、別のプロジェクトでもHomesteadを使いたくなった時の対応方法について紹介します。
こういうことがしたい
次のようなケースを想定しています。
- プロジェクトAでHomesteadを使用している
- プロジェクトBでもHomesteadを使いたいが、プロジェクトAとは別の環境として構築したい
実際に使おうとするとエラーになる
いざ新しくHomesteadを使おうとgit clone
などのもろもろを実行した後にvagrant up
すると、次のようなエラーが出ます。
A VirtualBox machine with the name 'homestead' already exists.Please use another name or delete the machine with the existingname, and try again.
エラーの原因
書いてあるとおり、homestead
という名前のVirtualBoxがすでに存在しているため、エラーになります。
Homesteadを使うときに何も設定しないとデフォルトの名前はhomestead
が使われます。これが原因です。
すでに構築済みのHomesteadと、vagrant up
しようとしたHomesteadでVirtualBoxの名前が同じになってしまっているのです。
解決策
新しく追加したプロジェクトの方では、別の名前をつけてあげましょう。Homestead.yaml
にname
を追加するだけです。
---name: project-bip: "192.168.56.56"memory: 2048# ...
参考:laravel - Multiple Homestead Boxes - Stack Overflow
公式ドキュメントにはなかった
この解決策について、公式ドキュメントを漁ったのですが見つかりませんでした。
一方で実装を漁ってみると、scripts/homestead.rbに次のような処理が複数ありました。
config.vm.define settings['name'] ||= 'homestead'
以上、Homesteadを複数のプロジェクトで動かすために必要な設定方法の紹介でした。意外と解決方法が単純でした。