質問: ### 前提 * マシン PC_A: Windows VIRTUAL_A: PC_A内のVirtualBoxで構築されたCentOS PC_B: Windows VIRTUAL_B: PC_B内のVirtualBoxで構築されたCentOS REPOSITORY_SERVER: gitのリポジトリを管理する、PC_A、B、VIRTUAL_A、Bからネットワークアクセス可能。 各VIRTUALにはapacheやmysqlなどがインストールされており開発対象のWebアプリケーションの動作ができます。 ### 考えている開発ルール 1. 開発者はREPOSITORY_SERVERからcloneで作業コピーをPC上に作成し、編集する。 2. その後プログラムの動作を確認するため編集したファイルをVIRTUAL上にアップロードする。 3. 動作確認後、commitしpushする。 ### 困っていること 2がどうも賢いやり方でないような気がしてなりません。 当初は1の時点で「開発者各々のブランチをpushしVIRTUAL上でpullする。動作確認できた時点でそのブランチをmasterにマージしpushする」のようなことも考えていたのですが、これだと細かい修正(変数の書き換えetc...)を確認したい度にコミットしていかなければ成り立たないのであきらめました。 何かよい方法や、参考になるWebサイト等あれば教えていただけないでしょうか。
回答: Windows + VirtualBoxですか... なら最初はVirutalBoxに内包されているフォルダ共有機能を使い、 不満が出てきたらsambaを利用するのがオススメです。 後はおまけとして末尾でDockerの紹介をしますので、興味があれば調べてみてください。 VirtualBoxにはフォルダ共有機能が存在します。 ただし、パーミッションが常に固定になったり、 ゲストOSでファイルの変更通知を理解出来ずに ApacheやNginXなどWebサーバが毎回キャッシュから返す不具合等も発生します。 rsyncという広く使われている2PC間のフォルダの同期ツールがありますが、 Windows環境にはデフォルトでは存在しません。 Cygwinなどを利用して導入する事は可能ですが、WindowsはLinux系とはパスの扱い等が異なるので落としてきても使えなかったりします。 従って新しくジョインした人がすぐ使える環境を構築するという点で不安が残ります。 他にはWindowsには共有フォルダという機能が存在し、 LinuxにはWindowsの共有フォルダと互換性をもたせたsambaという機能が存在します。 見ての通り動かすまでが面倒ですね、後はちょくちょくVirtualBox側がsambaを認識しなくなったりするので定期的にリロードさせてあげたりとプチ面倒だったりします。 ...とまぁ、様々な選択肢はあるものの痛し痒しといったところです。 Vagrantという仮想開発環境構築ソフトウェアがありますが、何のことはないVirutalBoxのラッパーです。 実際にはプラグインを足せば様々な仮想環境ツールとセットで利用できますが、 OSSでありWindows、Mac、Linux共通で使えるVirtualBoxがデフォルトみたいな扱いになっています。 こちらのワードもセットで調べてみると比較検証が捗るかと思います。 Docker for Windows に移行するのも手です。 これの実体はHyper-Vを利用した軽量Linuxマシンで、いい感じにファイル共有してくれる機能があるので開発環境構築のパートナーとしてはかなり優れています。 私は1年程前からVagrantは封印してこちらのDockerにて開発環境を構築するようにしています。 学習コストが高く勉強が大変なのが辛い所でしょうか? 慣れない内は開発環境の構築に手間取りそうですが、 docker-compose.ymlを書く癖が付けばインフラをコードで表現する技術がつくのでオススメです。 * VirtualBox と Hyper-Vは共存できなかった * Docker for Windows のインストール