さくっとDocker Composeできる場所をVagrant上につくる

Docker Machineを使ってもいいけど、なんとなく使い慣れたVagrantを挟んで、Docker Composeしてみたいなんてときがあると思います。

そんな時は、VagrantでCoreOsを起動し、Docker Composeをインストールして使いましょう。

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  config.vm.box = "coreos-alpha"
  config.vm.box_check_update = false
  config.vm.box_url = ["https://storage.googleapis.com/alpha.release.core-os.net/amd64-usr/current/coreos_production_vagrant.json"]

  config.vm.network "private_network", ip: "192.168.33.11"
  config.vm.synced_folder "./app", "/tmp/app", type: "nfs"

  config.vm.provider "virtualbox" do |vb|
    vb.memory = "1024"
  end

  config.vm.provision "shell", inline: <<-SHELL
    curl -L https://github.com/docker/compose/releases/download/1.2.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
    sudo mkdir /opt
    sudo mkdir /opt/bin
    sudo mv ~/docker-compose /opt/bin/docker-compose
    sudo chown root:root /opt/bin/docker-compose
    sudo chmod +x /opt/bin/docker-compose
  SHELL
  config.vm.provision "shell",
    inline:  "docker-compose -d -f /tmp/app/docker-compose.yml up",
    run: "always"
end


ディレクトリは

.
  ./Vagrantfile
  ./app/
    ./app/docker-compose.yml

みたいになっています。

CoreOsのイメージは最新版のalpha版がvagrant upと同時にダウンロードされます。

nfsでappの中身がCoreOsの/tmp/appにマウントされるので、docker-composeに必要な各種はそこに入れておきましょう。