結論から言うと
Laravel Homestead環境をパッケージ化(.box化)して他PCに移植するのはオススメしないのでもっと楽な方法で行う方が良い
テストの目的
vagrant package
で作成したLaravel Homestead環境(.box)を、Windows→Macに移行する。
これが出来れば、他環境への移行の際にもスムーズに行えるのではないかと思い、今回テストを実施
<移行元:Windows( .boxの作成環境)>
使用PC:Surface Pro 4
OS:Windows 10 Pro RS4
PHP:7.2.4 (cli) (built: Mar 28 2018 04:46:46)
Vagrant:2.1.2
VirtualBox:5.2.16
Laravel Framework:5.6.33
Laravel Homestead:7.14.2
Windows PCでHomestead環境を作成したのち、Laravelの動作をvagrant ssh
実行⇒http://192.168.10.10
に接続して確認。その後、Bootstrap4 / Laravel Mixが使えるように設定
テスト手順
- プロジェクトルートに移動し、
vagrant ssh
でVMに接続 - VM 内で下記を実行し、/etc/udev を無効化
sudo ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules
-
vagrant package
を実行
※パッケージ名の指定も可能
Command: vagrant package [name|id]
成功するとプロジェクトルート内にpackage.boxが作成される(筆者環境では約1.8Gのサイズ、下図)
Macへの移行テスト
- 作成したpackage.boxを、外部メディアにコピーしてVagrant+VirtualBox導入済のMacに移す。 その後、展開したいディレクトリに配置し、下記を実行
#listに追加
vagrant box add enma/homestead ./package.box
#コマンドで確認
vagrant box list
#VagrantFileの作成(その後ファイル内容の修正が必要)
vagrant init enma/homestead
#VM起動
vagrant up
下図の通り、Windows→Macへの環境移行には成功したが、環境依存のエラー処理に多くの時間を費やしたため、box作成~移行の手順は煩雑であり非効率との結論を得た。
難所
VagrantFlieは上記の通り
vagrant init
を実行して新たに作成し直す必要があるパーミッションやipの設定など諸々必要
参考:Laravelのパーミッションを適切に設定
vagrant on mac にLaravel Homesteadを入れてみるゲスト側とホスト側のVirtualBoxのバージョンが異なる場合、エラーが発生するため共有フォルダが有効化されない
参考:Vagrant 事始め 番外編 02 - 共有フォルダの共有に失敗するHomestead.yamlのsitesで設定した公開フォルダ以下はmountされない(何らかの手段で外部からソースを引っ張ってくる必要がある。例えばGitHubを用いてgit clone→box配布元の構成に正しく配置するといった作業が必要)
参考:[PC1→PC2] vagrantで独自boxを作って配布する
もっと簡単で楽な方法
素直に公式HPに書いてある通りにする⇒https://readouble.com/laravel/5.6/ja/homestead.html
『(日本語訳より抜粋)自分の「ホーム」ディレクトリの中のHomesteadフォルダへリポジトリをクローンすることは、自分のLaravel(とPHP)の全プロジェクトをホストしておくHomestead Boxを用意するのだと考えてください』
Qiita過去記事の内容をご覧ください
Laravel5.6 新規プロジェクト作成手順
共有フォルダの設定のところで、
自分のプロジェクトの管轄のフォルダをGitHub等から持ってくると楽