2015-03-26 5 views
13

У меня есть файл бродяг, который вызывает только базовый сервер Ubuntu, а затем использует сценарий оболочки для выполнения инициализации. И этот сценарий оболочки предназначен только для установки Docker и Docker Compose для настройки различных контейнеров, которые у меня есть.Могу ли я использовать Docker Compose для предоставления Vagrant напрямую?

Имеет ли смысл использовать сценарий оболочки для этого? Или есть способ рассказать Вагранту о том, чтобы напрямую предоставить Docker Compose? Я не знаю, насколько это было бы от уже существующего помощника Докера в Vagrant.

ответ

34

Я недавно поднял тот же вопрос, и я создал плагин для бродяг-продюсеров, который устанавливает компоновку докеров и открывает докеры, используя его. Для того, чтобы использовать его:

  1. Установите плагин: vagrant plugin install vagrant-docker-compose
  2. Добавьте следующие строки в Vagrantfile.

    config.vm.provision :docker 
    config.vm.provision :docker_compose, yml: "/vagrant/docker-compose.yml", rebuild: true, run: "always" 
    

Для полного примера см https://github.com/leighmcculloch/vagrant-docker-compose

9

Похоже, что с помощью бродяг 1.7.2 через Docker Provisioner нет прямой поддержки для выполнения этого типа операции. У поставщика также не было упоминания об этом. Vagrant docs: Docker provisioning, Vagrant docs: Docker commands

Мое предположение, что сторонники Vagrant, начиная с этой версии, считают, что Vagrantfile, когда используется с поставщиком Docker, предлагает подобное поведение. Это может объяснить, почему они не рискнули добавить прямую поддержку Fig до того, как она была заменена Docker Compose.

Я обнаружил, что использование Docker с Vagrant требует от вас найти правильное сочетание использования каждого инструмента, который вы найдете оптимальным для себя. Например, вы можете использовать команды Dockerfiles и Docker, такие как docker, более интуитивно понятные, чем попытка реализовать эту логику в Vagrantfile. Кроме того, вы можете попробовать гибрид Dockerfiles и использовать Vagrant для ссылки на Dockerfiles, который дает вам логику Docker в файле Docker и сборку «оркестровки» с использованием обычного Vagrantfile.

Вот как это может выглядеть:

  1. Использование очень простой бродяга Docker поставщик конфигурации, полагаться на Dockerfile для всего остального

    Использование d.build_dir = "." для ссылки на Provisioner Dockerfile

  2. Использование Докер in Vagrant чтобы начать все

    vagrant up --provision-with docker 
    
Смежные вопросы