Могу ли я использовать Docker Compose для предоставления Vagrant напрямую?
У меня есть файл бродяг, который вызывает только базовый сервер Ubuntu, а затем полагается на оболочку script для выполнения инициализации. И эта оболочка script предназначена только для установки Docker и Docker Compose для настройки различных контейнеров, которые у меня есть.
Имеет ли смысл использовать оболочку script для этого? Или есть способ рассказать Вагранту о том, чтобы напрямую предоставить Docker Compose? Я не знаю, насколько это было бы от уже существующего помощника Докера в Vagrant.
Ответы
Ответ 1
Недавно я поднял тот же вопрос, и я создал плагин для бродячего создания, который устанавливает docker-compose и поднимает докер, используя его. Чтобы использовать его:
- Установите плагин:
vagrant plugin install vagrant-docker-compose
-
Добавьте в свой 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
Ответ 2
Похоже, что с бродягой 1.7.2 не существует прямой поддержки через Docker Provisioner для выполнения этого типа операции. У поставщика также не было упоминания об этом. Вагрантские документы: подготовка докеров, Вагрантные документы: команды Docker
Я предполагаю, что сторонники бродяг, как и в этой версии, считают, что Vagrantfile при использовании с поставщиком Docker предлагает подобное поведение. Это может объяснить, почему они не рискнули добавить прямую поддержку Fig до того, как она была заменена Docker Compose.
Я обнаружил, что использование Docker с Vagrant требует от вас найти правильное сочетание использования каждого инструмента, который вы найдете оптимальным для себя.
Например, вы можете найти команды Dockerfiles и Docker, такие как docker, более интуитивно понятные, чем попытка реализовать эту логику в Vagrantfile. Кроме того, вы можете попробовать гибрид Dockerfiles и использовать Vagrant для ссылки на Dockerfiles, который дает вам логику Docker в файле Docker и сборку "оркестровки" с использованием обычного Vagrantfile.
Вот как это выглядит:
-
Используйте очень простую конфигурацию провайдера Vagrant Docker, полагайтесь на Dockerfile
для всего остального
Используйте d.build_dir = "."
для ссылки на Dockerfile
-
Используйте помощник Docker в Vagrant, чтобы начать все
vagrant up --provision-with docker