0
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 3 years have passed since last update.

VagrantとDockerで依存しない開発環境構築

Last updated at Posted at 2021-09-17

ローカルに開発環境を整えてしまうとトラブルが絶えません。今回はVagrantを使って快適な、依存しない開発環境を構築します。

依存しない開発環境構築

問題:ローカルで環境構築をすると環境汚染でトラブル続出
解決:OS、カーネル、コンテナ → 仮想化してしまおう!
方法:Vagrant(VirtualBox)で仮想OS → さらに、仮想OSの中でDockerで仮想コンテナを立てる

準備

  1. Virtualboxをインストール (仮想OS)

  2. Vagrantをインストール (Virtualbox管理)

  3. 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

~/dev/mutagen.yml
sync:
  app:
    mode: "two-way-resolved"
    alpha: "./"
    beta: "MyUbuntu:/home/vagrant/app"
    ignore:
      vcs: true
      paths:
        - "/log"
        - "/tmp"

結果

Vagrantを起動

Vagrantを起動します。

~/dev/
$ 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接続します。

~/dev
$ vagrant ssh

接続できたら、appディレクトリに移動してdocker-compose確認

~/
$ cd app
$ docker-compose up

立ち上がったアプリケーションにはVagrantfileで指定したIPアドレスでアクセスできます。

http://192.168.60.10:8000/

Vagrantの終了方法

vagrant haltにてVMを終了します。

~/my_app
$ vagrant halt

vagrant statusにて終了できたか確認できます。

poweroffになっていれば終了しています。
runningになっていればvagrant haltにて終了してください。

0
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
0
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?