ローカルに開発環境を整えてしまうとトラブルが絶えません。今回はVagrantを使って快適な、依存しない開発環境を構築します。
依存しない開発環境構築
問題:ローカルで環境構築をすると環境汚染でトラブル続出
解決:OS、カーネル、コンテナ → 仮想化してしまおう!
方法:Vagrant(VirtualBox)で仮想OS → さらに、仮想OSの中でDockerで仮想コンテナを立てる
準備
-
Virtualboxをインストール (仮想OS)
-
Vagrantをインストール (Virtualbox管理)
-
Vagrant Box(OS)をダウンロード
$ vagrant box add ubuntu/focal64
3. Mutagenをインストール (仮想環境とファイル同期)
~~~
$ brew install mutagen-io/mutagen/mutagen
~~~
4. Vagrantのプラグインを取得 (Docker, Mutagen等々)
~~~
$ vagrant plugin install vagrant-disksize vagrant-hostsupdater vagrant-mutagen vagrant-docker-compose
~~~
# 設定
任意のディレクトリに移動
$ mkdir ~/dev
$ cd ~/dev
以下の設定ファイルを作成します。
* Vagrantfile
* mutagen.yml
### Vagrantfile
参考:[VagrantコマンドとVagrantfileの設定メモ](https://qiita.com/pugiemonn/items/bcd95a35c3ec7624cd61#vagrantfile%E3%81%AE%E8%A8%AD%E5%AE%9A)
Vagrant box(OS)一覧:https://app.vagrantup.com/boxes/search
~~~bash:~/dev/Vagrantfile
Vagrant.configure('2') do |config|
#使うVagrant box(OS)を選択
config.vm.box = 'ubuntu/focal64'
#任意の名前を設定
config.vm.hostname = 'MyUbuntu'
#ipとportを設定
config.vm.network :private_network, ip: '192.168.60.10'
config.vm.network 'forwarded_port', guest: 8000, host: 8000
#VirtualBox設定
config.vm.provider :virtualbox do |vb|
vb.gui = false
vb.cpus = 2
vb.memory = 4096
vb.customize ['modifyvm', :id, '--natdnsproxy1', 'off']
vb.customize ['modifyvm', :id, '--natdnshostresolver1', 'off']
end
#ファイル共有設定
config.disksize.size = '30GB'
config.mutagen.orchestrate = true
config.vm.synced_folder './', '/home/vagrant/app', type: "rsync",
rsync_auto: true,
rsync__exclude: ['.git/', 'log/', 'tmp/']
config.vm.provision :docker, run: 'always'
config.vm.provision :docker_compose
end
mutagen.yml
sync:
app:
mode: "two-way-resolved"
alpha: "./"
beta: "MyUbuntu:/home/vagrant/app"
ignore:
vcs: true
paths:
- "/log"
- "/tmp"
結果
Vagrantを起動
Vagrantを起動します。
$ vagrant up
コマンド実行後に、エラーが発生しました。
$ /Users/hoge/.vagrant.d/gems/2.7.4/gems/vagrant-mutagen-0.1.3/lib/vagrant-mutagen/Mutagen.rb:22:in `initialize': No such file or directory @ rb_sysopen - /Users/hoge/.ssh/config (Errno::ENOENT)
configが無いと言われているので、作成します。
$ touch /Users/hoge/.ssh/config
仮想環境にSSH接続
vagrant up
が完了したらSSH接続します。
$ vagrant ssh
接続できたら、app
ディレクトリに移動してdocker-compose確認
$ cd app
$ docker-compose up
立ち上がったアプリケーションにはVagrantfileで指定したIPアドレスでアクセスできます。
http://192.168.60.10:8000/
Vagrantの終了方法
vagrant halt
にてVMを終了します。
$ vagrant halt
vagrant status
にて終了できたか確認できます。
poweroff
になっていれば終了しています。
running
になっていればvagrant halt
にて終了してください。