vagrant
docker
docker-compose

vagrant-docker-compose プラグインの使い方

概要

vagrant でお手軽に docker-compose 実行環境が導入できる vagrant-docker-compose プラグインというものがあるようなので使ってみました。
https://github.com/leighmcculloch/vagrant-docker-compose

本記事では nginx コンテナに index.html を配置してブラウザで表示するサンプルを紹介します。

実行環境

  • Windows 10 pro
  • VirtualBox 5.2.12
  • Vagrant 2.1.2
  • vagrant-docker-compose 1.3.0

インストール

Vagrantがインストールされた状態で次のコマンドを打ちます。

vagrant plugin install vagrant-docker-compose

フォルダ構成

├─ docker
│  ├─ docker-compose.yml
│  └─ www
│     └─ index.html
└─ Vagrantfile
  • dockerフォルダをマウントするので、docker-compose.ymlで使うフォルダ(ここではwww)はdocker配下に置いています。

ファイルの編集

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

Vagrant.configure("2") do |config|
  # Ubuntu 16.04を使う場合
  config.vm.box = "minimal/xenial64"

  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.synced_folder "./docker", "/vagrant/docker"

  # docker の設定
  # 注)run: "always" が必須
  config.vm.provision :docker, run: "always"

  # docker-compose の設定
  config.vm.provision :docker_compose,
    yml: "/vagrant/docker/docker-compose.yml",
    compose_version: "1.21.2",
    run: "always"
end
docker/docker-compose.yml
version: '2.0'

services:
  web:
    image: "nginx:1.15.0"
    ports:
      - '80:80'
    volumes:
      - ./www:/usr/share/nginx/html
    restart: always
docker/www/index.html
<!DOCTYPE html>
<html>
<head>
  <title>Hello</title>
</head>
<body>
  <h1>Hello from Vagrant Docker Compose</h1>
</body>
</html>
  • Vagrantfile
    • コメントにも書いていますが、run: "always"を書かないと「Couldn't connect to Docker daemon. You might need to install Docker」というエラーが出てしまいます。(参考: #38
    • compose_version は使用する docker-compose のバージョンです。READMEによるとデフォルトは1.8.0のようなので、現時点での最新バージョン(1.21.2)にしています。

実行

ターミナルで Vagrantfile の置いてある場所に移動して↓を実行します。

vagrant up

ブラウザで http://192.168.33.10 にアクセスすると"Hello from Vagrant Docker Compose"が表示されます。