Docker環境をVagrantで構築する

はじめに

メールテスト可能な最強のWordPress開発環境をDockerで構築するでは、DockerをVagrantで動かしています。
Vagrantであれば、Windows/Mac問わず同じ環境を構築できることができるので、理論的にはどんなクライアント環境でもDockerで同じ開発環境を構築できるはずです。

WindowsにおいてはVirtualBoxとHyper-Vが共存できないため、都度切り替えをすることなく対応できるのでスムーズです。

ベースとなるBox

Dockerを動かすベースはCoreOSを利用しています。
coreos/coreos-vagrant: Minimal Vagrantfile for Container Linux

CoreOSはDocker専用を起点とした軽量Linux OSなので、Dockerを扱うにあたって必要なものも揃っていて、イメージサイズが非常に軽くて扱いやすいです。

ファイル構成

share というフォルダはDockerと同期するフォルダとして作成しておきます。

coreos-vagrant/
├─ share/
├─ .
〜省略〜
├─ .
└─ Vagrantfile

Vagrantfile

クローンしたCoreOSのVagrantfile最終行の end の前に追記をして、以下をVagrant起動時に実現します。

  • Docker Compose をインストールする
  • コンテナとのフォルダを同期する
  • CoreOS の自動アップデートを無効にする

CoreOSの自動アップデートを無効にする理由は、あくまでもローカル開発なので開発スピード優先として、CoreOSのアップデートに伴う再起動をさせないためです。
セキュリティと引き換えであることをご理解ください。

Docker Compose については、公式サイトよりバージョンを確認して、最新バージョンを指定した方が良いと思います。

〜省略〜
  end

  # ---------------ここから追記-------------

  # Docker Compose をインストールする
  config.vm.provision :shell, inline: <<-SHELL
    curl -L https://github.com/docker/compose/releases/download/1.23.1/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.synced_folder "./share", "/home/core/share", id: "core", :nfs => true, :mount_options => ['nolock,vers=3,udp']

  # CoreOS の自動アップデートを無効にする
  config.vm.provision :shell, inline: <<-SHELL
    sudo systemctl stop update-engine
  SHELL

  # ---------------ここまで追記-------------

end

Windowsではプラグインのインストールが必須

コンテナとのフォルダを同期するには、Windowsではvagrant-winnfsdプラグインをインストールする必要があります。

参考サイト

コメント