2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

なぜ開発環境をVM+Dockerで構築するのか

Posted at

業務で仮想マシン(VM:VirtualBOX)上でdocker-composeを動かして開発を行っているので、そのメリット/デメリットについて書いてみようと思います。

メリット①:インフラが可視化できる

VMおよびシステムの構成が以下に集約されるため、どんなソフトを使っているか、どんなアーキテクチャ構成になっているかが分かりやすいです。
また、バージョンを指定してインストールしておけば、バージョン違いによる動作不良なんかも防げます。

  • VMの構成:Vagrantfile
  • システム構成:docker-compose.yml

メリット②:バージョン管理できる

Vagrantfiledocker-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のプラクティスなんかも書いてみたいと思います。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?