最新版をインストールする。
雑に言うと、VirtualBoxの操作をコードで書ける、みたいな仕組み。 VirtualBoxとVagrantのバージョンが大きくズレているとハマりポイントになるので、両方最新版にする。
最新版をインストールする。 https://www.vagrantup.com/downloads.html
LinuxマシンがあればDockerは動くので、最低限VirtualBox上にLinuxマシンがあればよい。 が、このやり方は構成ドリフト(俺のマシンでは動くんだけど問題)を起こすので、 Vagrantで環境構築を行うことにより、誰がどこでやってもだいたい同じ構成になるようにする。 (何をどうやってるかは下のVagrantfileをみればわかる。)
プラグインをインストール
- vagrant-proxyconf (1.5.2)
- vagrant-vbguest (0.15.1)
vagrant plugin install <plugin>
# -*- mode: ruby; coding: utf-8 -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
if Vagrant.has_plugin?("vagrant-proxyconf")
config.proxy.enabled = false # => true; all applications enabled, false; all applications disabled
config.proxy.http = "http://oskproxy.intra.tis.co.jp:8080"
config.proxy.https = "http://oskproxy.intra.tis.co.jp:8080"
config.proxy.no_proxy = "localhost,127.0.0.1"
end
if Vagrant.has_plugin?("vagrant-vbguest")
# set auto_update to false, if you do NOT want to check the correct
config.vbguest.auto_update = true
end
config.vm.box = "ubuntu/trusty64"
config.vm.provider "virtualbox" do |vm|
# メモリを2GBに設定
vm.memory = 2048
# ホストとゲストで64bit、32bitが混在する場合の設定
# https://qiita.com/hidekuro/items/fc12344d36d996198e96
vm.customize ["modifyvm", :id,
"--ostype", "Ubuntu_64" # 64bit
]
end
# このIPアドレスでsshできる
config.vm.network :private_network, ip: "192.168.73.73"
# ポートフォワーディング
config.vm.network :forwarded_port, host: 3003, guest: 3003
config.vm.network :forwarded_port, host: 3000, guest: 3000
# プロビジョニング
config.vm.provision "shell", inline: <<-SHELL
test -f /etc/bootstrapped && exit
apt-get update
apt-get install -y apt-transport-https ca-certificates
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list
apt-get update
apt-get purge lxc-docker
apt-cache policy docker-engine
apt-get install -y docker-engine
gpasswd -a vagrant docker # ユーザvagrantをdockerグループに所属させる
service docker restart
curl -s -S -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
date > /etc/bootstrapped
SHELL
end
後半めっちゃシェルスクリプトで環境構築しているが、このやり方には問題がある。
- シェルスクリプトは人によって書き方にばらつきが出る
- 設定の追加ができない(今回の場合は最初の一回こっきり)
- 設定を流用したり共通化しにくい(例えばCentOSに変えたらこの設定は使えない)
こういう問題に対処するのにはAnsibleのようなインフラ構成管理ツールを使用する。
が、今回やりたいことに対してはオーバースペックというか、登場人物が多くなってわかりにくくなるので、このままいく。
vagrant up
VirtualBoxがheadless(画面なし)で起動している。 VirtualBoxを自分で起動すると、設定した覚えのない仮想マシンが動いているのが見えるはず。
起動した仮想マシンにsshする。
vagrant ssh
または、TeraTermなどのターミナルエミュレータを使ってもよし。
user | password |
---|---|
vagrant | vagrant |
vagrant sshして操作する。
dockerは既にインストール済のはず。(Vagrantのprovisioningで実施)
docker --version
# rascaloid
docker run -d -p 3000:3000 --rm kawasima/rascaloid
# rascaloid-ri
docker run -p 3003:3003 -e "RASCALOID_HOST=192.168.73.73" -e "RASCALOID_PORT=3000" --rm kawasima/rascaloid-ri
状態を確認するには、
docker ps
停止するには、
docker stop <CONTAINER ID>
docker-composeは既にインストール済のはず。
docker-compose version
curl -O https://gist.githubusercontent.com/sambatriste/28cd82c4a17eb462431cf6b1cf8c8e6e/raw/29f661b6ddee03d28f5ac541eade6e2f0bab4502/docker-compose.yml
Vagrantfileで、ポートフォワーディング設定してあるので、localhostでアクセスできる。
http://localhost:3003/projecs
仮想マシンのNICに付与されたIPでもできる。ポートフォワード設定があやしいときはこっちで確認して原因切り分けする。
proxy使うとき、vagrantfileのプロキシの設定をtrueに変更すること