何がやりたいのか
boot2docker使わないで、vagrant でゲストOSに
- Apache
- PHP
- MySQL
とか盛り込んだdockerコンテナを立てて動かす、かつ
vagrant のゲストOS内でたてたコンテナでデータをマウント、かつ
そのマウントしたデータをホストOS(Win)とsyncする。
そんな多段的なことする必要あるのかはわからない。
環境
- Win7
- VirtualBox
- Vagrant
- ゲストOS:CoreOS
CoreOSという選択
docker がすぐ使えるから。
$ git clone https://github.com/coreos/coreos-vagrant.git
vagrant up 前にやっておきたいこと
少しVagrantfile編集しておく。
ネットワーク周りを調整
ip = "172.17.8.#{i+100}"
config.vm.network :private_network, type: "dhcp", ip: ip
config.vm.network :public_network, type: "dhcp"
i
っていうのは今は考えない。インスタンス増えた時にマッピングできる何か。
ホスト、ゲスト間のトポートフォワーディング
config.vm.network "forwarded_port", guest: 80, host:8080
ホスト、ゲスト間でsyncするディレクトリ
config.vm.synced_folder "./app", "/app", type: "rsync"
config.vm.synced_folder "./data", "/data", type: "rsync"
(※ mac の人は type: "nfs"
とか使えていいですね!
http://2no.hatenablog.com/entry/2014/10/23/033125
いろいろ調べたけど、結局Winでnfs使えなかった。)
の後に、
$ cd coreos-vagrant
$ vagrnt up
docker で起動したかったWebアプリ
joomlaです。
$ vagrant ssh
ここからゲストOS
core@core-01 $ docker run -d \
-p 80:80 \
-p 443:443 \
-p 3306:3306 \
-v /app:/var/www/html \
-v /data/mysql:/var/lib/mysql \
-e MYSQL_PASS="password" \
--name joomla \
dell/joomla
一度runしたら、あとはdocker start joomla
とかでいいです。
この時点で、ゲストOSのディレクトリをマウントしてるんだけど、ホストOSには存在してないから、scpとかでコピーしてた。
$ scp -r -i ~/vagrant.d/insecure_private_key core@core-01:/app ./
とかですかね。mysqlのデータとかscp出来なかったら、chmodで変えてコピーしたりしてた。あんまりかっこ良くない。
アクセス
おそらく、http://172.17.8.101 でアクセスできるはず。
ネットワーク上のipのときは http://x.x.x.x:8080 とか。
このままだとホストOS側と同期しないので、ホスト側で
$ vagrant rsync-auto
でもこれ結局ホスト->ゲストの一方向なので。
ゲスト側での変更もホスト側に同期しなきゃって時は
$ vagrant plugin install vagrant-rsync-back
$ vagrant rsync-back
してください。残念、autoではない。
本日は以上です。