業務で仮想マシン(VM:VirtualBOX)上でdocker-composeを動かして開発を行っているので、そのメリット/デメリットについて書いてみようと思います。
メリット①:インフラが可視化できる
VMおよびシステムの構成が以下に集約されるため、どんなソフトを使っているか、どんなアーキテクチャ構成になっているかが分かりやすいです。
また、バージョンを指定してインストールしておけば、バージョン違いによる動作不良なんかも防げます。
- VMの構成:
Vagrantfile
- システム構成:
docker-compose.yml
メリット②:バージョン管理できる
Vagrantfile
もdocker-compose.yml
もテキストファイルのため、Git等のバージョン管理ツールで管理することができます。
メリット③:環境の複製が容易
VirtualBOXとVagrantをインストールしておけば開発環境を簡単に複製することができます。
1時間もあれば環境が作れてしまいます。
メンバーが増える場合などに、環境構築に1日以上かけるなんてことがなくなります。
構築手順(例)
- VT-xの有効化(BIOSの設定が必要です)
- VirtualBOXとvagrant、Gitのインストール
- Vagrantfileをクローン
-
vagrant up
を実行
この時点で開発環境の構築は完了
-
vagrant ssh
でVMにssh接続 -
git clone xxxxxx
でプロジェクトをクローン- docker-compose.ymlが入っているものとする
-
cd xxx && docker-compose up
でプロジェクト起動
これだけで環境構築&プロジェクトの起動が完了します。
メリット④:本番環境に近い環境で開発ができる
Windows上で開発する場合、本番や検証環境へデプロイした後にOS依存の不具合が発生することがあります。
開発時から本番と同じOSを使うことでOS依存の不具合を早い段階で回避することができます。
その他のメリット
- プロジェクトが終わったらVMを破棄するだけで、ホストOSはクリーンな状態を保てる
- 動かなくなったらVMを破棄して作り直せば良い
デメリット
最初に作る人が大変
最初に環境を作る人は結構大変です。
慣れてる人であればスラスラかけるかもしれませんが、ナレッジのないチームで1から作る場合は結構時間がかかると思います。
最初は単純なVMを立ち上げて、VM内でプロジェクトに必要なツールをyum install
して、それらのコマンドをVagrantfileに書いていけばよいと思います。
なんかよくわかんないけど、動いてる状態になる
Vagrantfileを作った人以外は、なんかよくわかんないけど環境出来たという状況になりがち。
有識者がいなくなるとメンテできなくなる可能性が高い。。
最後に
Vagrantfileができあがるまでは大変ですが、一度できてしまえば楽なのでおススメです。
今後メンバーが増えることが確定している場合などは特に良いですね!
時間があればVagrantfileのプラクティスなんかも書いてみたいと思います。